1. 概述
本文档描述了一个 HTTP/1.1 协议的扩展,允许客户端执行远程 Web 内容的编辑操作。这个扩展提供了一组相关的方法 (methods)、报头 (headers)、请求实体格式 (request entity body formats) 和响应实体体格式 (response entity body formats) 来支持对以下资源的操作:
- 属性 (Properties):能够创建、删除和查询关于 web 资源的信息,比如它们的作者、创建日期等。
- 集合 (Collections):能够创建多组文档并检索层级关系列表(很像文件系统中的目录列表)。
- 锁定 (Locking):杜绝多人同时处理一个文档的能力,这可以有效防止“更新丢失问题 (lost update problem)”,该问题一般是由如下这种情形引发的 —— 第一个人先保存了更改,然后另一个人在没有合并前者更改的情况下也保存了自己的更改,于是第一个人的更改内容就丢失了。
- 命名空间操作 (Namespace Operations):指示服务器复制和移动 Web 资源,支持更改 url 到资源映射的操作。
这些操作的需求和基本原理在一个配套文档“万维网分布式创作和版本控制协议要求”[RFC2291]中进行了描述。
本文档不会列出[RFC2291]建议的版本控制操作。这个工作是在另一个单独的文档“WebDAV 的版本控制扩展”[RFC3253]中完成的。
下面几节详细介绍了各种 WebDAV 抽象概念:资源属性 (第 4 节)、资源集合 (第 5 节)、一般锁 (第 6 节) 以及特别的写入锁 (第 7 节)。
这些抽象是由 webdav 特有的 HTTP methods(第 9 节) 和与之协作的 HTTP headers(第 10 节) 来实现操作的。如何处理 WebDAV 的 HTTP 请求并进行响应可在 (第 8 节) 中找到。
虽然 HTTP/1.1 提供的状态码足以描述 WebDAV methods 可能遇到的大多数错误情况,但是仍然有一些错误没有归入这些现有的类别里去。本规范 (第 11 节) 内容定义了专为 WebDAV 开发的额外状态码 (status codes),对于已有的 HTTP 状态码如何在 WebDAV 中使用也在 (第 12 节) 进行了描述。由于一些 WebDAV methods 可以同时对多个资源进行操作,所以在 (第 13 节) 我们会介绍可以返回多个资源状态信息的多状态 (Multi-Status) 响应能力。最后,这个版本的 WebDAV 引入前置条件和后置条件 XML 元素 (第 16 节) 到 error response body 中。
WebDAV 使用 XML([REC-XML]) 来描述属性名称和其中的一些值,也会使用 XML 来编排一些复杂的请求和响应。所以该规范包含了所有属性的 DTD 和文本定义 (第 15 节) 以及编组中使用的所有其他 XML 元素 (第 14 节)。WebDAV 在扩展 WebDAV XML 编组并使之向后兼容时还包括一些特殊规则 (第 17 节)。
作为规范结尾部分的是:网络资源实现本规范的意义 (第 18 节)、国际化支持 (第 19 节) 和安全性 (第 20 节)。