# 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节)。