什么是webDAV?

Web Distributed Authoring and Versioning (WebDAV) is an extension of the Hypertext Transfer Protocol (HTTP) that allows clients to perform remote Web content authoring operations. WebDAV is defined in RFC 4918 by a working group of the Internet Engineering Task Force.

The WebDAV protocol provides a framework for users to create, change and move documents on a server. The most important features of the WebDAV protocol include the maintenance of properties about an author or modification date, namespace management, collections, and overwrite protection. Maintenance of properties includes such things as the creation, removal, and querying of file information. Namespace management deals with the ability to copy and move web pages within a server’s namespace. Collections deal with the creation, removal, and listing of various resources. Lastly, overwrite protection handles aspects related to locking of files.

Many modern operating systems provide built-in client-side support for 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可以做什么?

WebDAV 允许客户端进行下列操作
处理服务器上 WebDAV 发布目录中的资源。使用此功能,其优点例如:
1.具有正确权限的用户可以在 WebDAV目录中复制和移动文件。
2.修改与某些资源相关联的属性。例如,用户可写入并检索文件的属性信息。
3.锁定并解锁资源以便多个用户可同时读取一个文件。但每次只能有一个人修改文件。
4.搜索 WebDAV 目录中的文件的内容和属性。
在服务器上设置 WebDAV 发布目录与通过 Internet 信息服务管理单元设置虚拟目录一样简单。设置好发布目录后,具有适当权限的用户就可以向服务器发布文档,并处理目录中的文件。

webDAV的实现(HTTP1.1的扩展)

COPY
copy a resource from one URI to another
LOCK
put a lock on a resource. WebDAV supports both shared and exclusive locks.
MKCOL
create collections (a.k.a. a directory)
MOVE
move a resource from one URI to another
PROPFIND
retrieve properties, stored as XML, from a web resource. It is also overloaded to allow one to retrieve the collection structure (also known as directory hierarchy) of a remote system.
PROPPATCH
change and delete multiple properties on a resource in a single atomic act
UNLOCK
remove a lock from a resource
WebDAV 请求的一般结构遵循 HTTP 的格式。
并且由以下三个组件构成:
1. 方法。 声明由客户端执行的方法(上面描述的方法)。
2.标头。 描述有关如何完成此任务的指令。
3.主体(可选)。 定义用在该指令或其他指令中的数据,用以描述如何完成此方法。
在主体组件中,XML 成为整个 WebDAV 结构中的关键元素。

Server Support(支持webDAV的服务器)

Apache HTTP Server provides WebDAV modules based on both davfs and Apache Subversion (svn).
Microsoft's IIS also has a WebDAV module.
Nginx has a very limited optional WebDav module[4] and a third-party module[5]
SabreDAV is a PHP application that can be used on Apache or Nginx in lieu of their bundled modules
Nextcloud is a cloud storage PHP application which offers full WebDAV support[6]
lighttpd has an optional WebDav module[7]

支持webDAV的客户端

Git supports writing to HTTP remotes, although the "smart" Git protocol for HTTP requiring special server support was made the preferred protocol over WebDAV
Linux via GVfs, including GNOME Files and via KIO, including Konqueror and Dolphin
macOS, including native support for CalDAV and CardDAV, the design of which is based on WebDAV
Microsoft Windows, including native support in Explorer
Microsoft Office
Comparison of WebDAV software

 

 

参考文档:

  • https://en.wikipedia.org/wiki/WebDAV
  • http://shouce.jb51.net/svnbook/1.4/svn.webdav.basic.html

发表评论