什么是WebDAV
2010-11-02 16:13:29 阿炯

WebDAV(Web-based Distributed Authoring and Versioning)是基于HTTP 1.1的一个通信协议。它为 HTTP 1.1添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁(Locking),写完后对文件解锁(Unlock),还可以支持对文件所做的版本控制。这个协议的出现极大地增加了Web 作为一种创作媒体的价值,基于 WebDAV 可以实现一个功能强大的内容管理系统或者配置管理系统。

WebDAV协议为用户在服务器上创建,更改和移动文档提供了一个框架。WebDAV协议最重要的功能包括维护作者或修改日期的属性、名字空间管理、集合和覆盖保护,维护属性包括创建、删除和查询文件信息等。名字空间管理处理在服务器名称空间内复制和移动网页的能力。集合(Collections)处理各种资源的创建、删除和列举,覆盖保护处理与锁定文件相关的方面。




WebDAV stands for "Web-based Distributed Authoring and Versioning". It is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.

WebDAV 本身是一个类似于 HTTP 的通信协议(IETF RFC 2518)。它与 HTTP 类似,需要实现服务器和客户端两部分软件。目前 WebDAV 已经有了大量相关的软件实现,作为一个文件共享的标准不断发展。当今的操作系统变得极端的Web化,许多内置了对装配WebDAV服务器导出的“共享”的支持。

DAV的意思是“Distributed Authoring and Versioning”。RFC 2518为HTTP 1.1定义了一组概念和附加扩展方法来把Web变成一个更加普遍的读/写媒体,基本思想是一个WebDAV兼容的web服务器可以像普通的文件服务器一样工作;客户端可以通过HTTP装配类似于NFS或SMB的WebDAV共享文件夹。但可惜的是,RFC规范并没有提供任何版本控制模型,基本的DAV客户端和服务器只是假定每个文件或目录只有一个版本存在,可以重复的覆盖。因为RFC 2518漏下了版本概念,几年之后,另一个委员会留下来负责撰写RFC 3253来添加WebDAV的版本化,也就是“DeltaV”。WebDAV/DeltaV客户端和服务器经常叫做“DeltaV”客户端和服务器,因为DeltaV暗含了基本的WebDAV。

最初的WebDAV标准得到了广泛的成功,所有的现代操作系统拥有内置的(后面有详细资料)对普通WebDAV的支持,许多流行的应用程序也可以使用 WebDAV—Microsoft Office,Dreamweaver和Photoshop。在服务器方面,Apache从1998年就开始支持WebDAV,并被认为是一个事实上的开源标准,也有许多商业的WebDAV服务器,例如Microsoft的IIS。不幸的是,DeltaV没有这样的成功,很难寻找到任何 DeltaV客户端和服务器。只有一些不太出名的商业产品,因此很难测试交互性,不清楚为什么DeltaV还这样停滞,一些人说规范太复杂了,还有些人认为尽管DeltaV的特性有很大的吸引力(即使最新的技术用户也喜欢使用网络文件共享),版本控制特性对大多数用户还不是这样有趣和必须。最后有些人认为DeltaV还这样不流行主要是因为一直没有开源的服务器产品实现它。


WebDAV扩展了request方法所允许的标准HTTP谓词和HTTP头,增加的谓词包括:
COPY:将资源从一个URI复制到另一个URI
LOCK:锁定一个资源。WebDAV支持共享锁和互斥锁。
MKCOL:创建集合(即目录)
MOVE:将资源从一个URI移动到另一个URI
PROPFIND:从Web资源中检索以XML格式存储的属性。它也被重载,以允许一个检索远程系统的集合结构(也叫目录层次结构)。
PROPPATCH:在单个原子性动作中更改和删除资源的多个属性
UNLOCK:解除资源的锁定


WebDAV 工作组的目标是,设计一个协议,它提供基于万维网的分布式创作和版本控制。 当前的 WebDAV 规范 (IETF RFC 2518) 解决协作式创作工具的三个主要问题:
改写保护:HTTP 1.1 无法确保客户端可以保护资源,并且可以在其他客户端同时编辑它们的情况下进行更改。 使用 WebDAV,可以通过多种方式来锁定资源,以便让其他客户端知道您对所讨论的资源感兴趣,或者防止其他客户端访问该资源。

资源管理:HTTP 只能直接访问单个资源。 WebDAV 提供一种更有效地组织数据的方法。 WebDAV 引入了可包含资源的集合(类似于文件系统文件夹)概念。 通过 WebDAV 进行的资源管理包括如下功能:创建、移动、复制和删除集合,以及集合中的资源或文件。

文档属性:不同类型的数据具有唯一的属性,这有助于描述数据。 例如,在电子邮件中,这些属性可能是发件人的姓名和接收邮件的时间。在协作文档中,这些属性可能是文档原始作者的姓名和最后一个编辑者的姓名。 因为人们使用的文档类型各不相同,所以可能的属性类型列表也变得无限大。 XML 是 WebDAV 所需的一种可扩展通讯工具。



当Subversion还在设计阶段时,使用Apache的httpd作为主要网络服务器就是一个很好的想法,已经有了支持WebDAV服务的模块(mod_dav_svn)。DeltaV有一个很新的规范,希望就是Subversion服务器模块最终能够成为一个开源的DeltaV参考实现,但非常不幸,DeltaV得版本模型过于详细,与Subversion的模型并不匹配,虽然有些概念可以对应起来,但有些则不能。

这是什么意思呢
首先,Subversion客户端不是一个完全实现的DeltaV客户端,它需要从服务器得到DeltaV不能提供的东西,因此非常依赖于只有mod_dav_svn理解的Subversion特定的REPORT请求。其次,mod_dav_svn不是一个完全的DeltaV服务,许多与Subversion不相关的DeltaV规范还没有实现。

在开发者社区一直有这样的讨论,是否值得弥补这种形势。改变Subversion的设计来匹配DeltaV看起来并不现实,所以可能没有办法让客户端从普通的DeltaV服务器上得到所有的东西。另一方面,mod_dav_svn可以继续开发来实现所有的DeltaV,但缺乏这样做的动力—几乎没有能与之交户的DeltaV客户端。如果你使用Apache/mod_dav_svn作为你的Subversion网络服务器,某种程度上,你也是在运行一个WebDAV服务器。这个附录提供了这种协议一些背景知识,Subversion如何使用它,Subversion如何和认识WebDAV的软件交互工作。

在这里是一些与 WebDAV 相关的软件项目:http://www.webdav.org/projects/

WebDAV 还有很多话题,比如 WebDAV 完全可以取代 FTP。WebDAV 至少在以下几个方面对 FTP 具有压倒性优势:
1、FTP 需要申请操作系统帐号。WebDAV 不需要申请任何操作系统帐号,它使用一套自己定义的安全完善的身份验证机制。

2、FTP 的所有数据(包括登录信息)全部使用明文传送,加密必须要自己来实现,例如:可以手工用 GPG 来做这件事,但是毕竟还是不方便。用 WebDAV 就可以使用 HTTPS 来传输数据,加密解密的操作完全是在低层自动完成的。

3、FTP 传输数据的传输效率比较低,每传送一个文件需要打开一个新的 TCP 连接,而 WebDAV 传输所有文件只需要一个 TCP 连接。

4、FTP 不象 HTTP 那样容易穿越防火墙,在广域网的应用范围比 HTTP 要小的多。而 WebDAV 因为是基于 HTTP 的,所以具有 HTTP 的所有优点。

5、FTP 客户端工具没有 WebDAV 客户端工具使用方便。你刚才已经看到 WebDAV 服务器配置好后,通过 Windows 2000/XP 的 Web Folder 方式访问 Web 文件夹就和访问本地文件夹没有多少区别。如果应用程序支持 WebDAV 协议(例如 Word 2000),就可以直接打开 Web 文件夹中的文件并且编辑,然后直接保存在原先的 Web 文件夹中。这个用起来简直就和 Samba 完全一样。你知道哪一个 FTP 客户端使用起来有这么方便吗?


官方主页:http://www.webdav.org/

该文章最后由 阿炯 于 2020-08-12 14:58:10 更新,目前是第 2 版。