(chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV相关的知识,希望对你有一定的参考价值。

WebDAV(Web-based Distributed Authoring and Versioning)基于万维网的分布式创作和版本控制

1. 定义

一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。功能包括:

  • 创建文件
  • 删除文件
  • 文件创建者管理
  • 文件编辑过程中禁止其他用户内容覆盖的加锁功能
  • 对文件内容修改的版本控制功能。

它作为扩展 HTTP/1.1的协议定义在 RFC4918。
在这里插入图片描述

2. 扩展HTTP/1.1的WebDAV

  • 集合(Collection )
    是一种统一管理多个资源的概念。以集合为单位可进行各种操作。也可实现类似集合的集合这样的叠加。

  • 资源( Resource )
    把文件或集合称为资源

  • 属性( Property )
    定义资源的属性。定义以“名称=值”的格式执行。

  • 锁( Lock )
    把文件设置成无法编辑状态。多个人同时编辑时,可防止在同一时间进行内容写入。

3. WebDAV内新增的方法及状态码

为实现远程文件管理,增加的方法如下:
propfind:获取属性
proppatch:修改属性
mkcol:创建集合
copy:复制资源及属性
move:移动资源
lock:资源加锁
unlock:资源解锁
    
为了配合扩展的方法,状态码也随之扩展:
102 Processing:可正常处理请求,但目前是处理中状态
207 Multi-Status:存在多种状态
422 Unprocessible Entily:格式正确,内容有误
424 Failed Dependency:处理与某请求关联的请求失败,因此不再维持依赖关系
507 Insufficient Storage:保存空间不足

3.1 WebDAV的请求实例

下面是使用PROPFIND方法对http://www.example.com/file 发起获取属性的请求。

PROPFIND/file HTTP/1.1Host: www .example.com
Content-Type: application/xml;charset="utf-8"
Content-Length: 219

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV : "
<D:prop xmlns:R="http://ns.example.com/boxschema/">
<R:bigbox/>
<R:author/<R:DingALing/>
<R:Random/>
</D:prop>
</D:propfind>

3.2 WebDAV的响应实例

eg 针对之前的PROPFIND方法,返回http://www.example.com/file的属性的响应。

HTTP/1.1 207 Multi-status
Content-Type: application/xml ;charset="utf-8"
Content-Length: 831

<?xml version="1.0"encoding= "utf-8"?>
<D:multistatus xmlns:D="DAV: ">
<D:response xmlns:R="http: //ns.example.com/boxschema/">
<D:href>http://www .example.com/file
</D:href>
<D:propstat>
<D:prop>
<R :bigbox>
<R:BoxType>Box type Ac/R:BoxType>
</R: bigbox>
<R :author>
<R:Name>J.J.Johnson</R:Name>
</R:author>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
<D:propstat>
<D:prop><R:DingALing/>
<R : Random/>
</D:prop>
<D:status>HTTP/1.1 403 Forbidden</D:status>
<D:responsedescription> The user does not have access to theDingALing property.
</D:responsedescription>
</D:propstat>
</D:response>
<D:responsedescription> There has been an access violation error.
</D: responsedescription>
</D:multistatus>

以上是关于(chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV的主要内容,如果未能解决你的问题,请参考以下文章

(chap9 基于HTTP的功能追加协议) 期盼已久的http 2.0

(chap9 基于HTTP的功能追加协议) HTTP瓶颈

读《图解HTTP》总结--第九章

HTTP用户认证追加协议以及相关技术简单学习

HTTP协议与攻击

基于HTTP 协议认证介绍与实现