搭建超简单的 WebDAV 服务

WebDAV是什么

Posted by LZP on August 15, 2018

WebDAV

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

WebDAV是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。通俗一点儿来说,WebDAV 就是一种互联网方法,应用此方法可以在服务器上划出一块存储空间,可以使用用户名和密码来控制访问,让用户可以直接存储、下载、编辑文件。

WebDAV 是对 HTTP/1.1 协议的扩展,添加了新的 HTTP 方法和标头,支持任意类型的 Web 制作,不仅支持 HTML 和 XML,还支持文本、图形、电子表格等格式。

优势

由于 Web 已经成为 Internet 的基础,因此 HTTP 1.1(超文本传送协议)被证实是用来传输数据的非常灵活的通用协议。 但是,HTTP 存在一些明显的缺点,从而限制了它作为综合的 Internet 通讯协议而被采用: > 它非常适合用于查看的静态文档,但不能提供以足够复杂(以便向客户端提供丰富的创作功能)的方式来处理文档的方法。 例如,当两个作者在未进行交流的情况下同时对一个文档进行更改时,就会出现“更新丢失”问题。 只有由最后一个作者完成、并将修改后的文档重新上载到服务器的修改才会保留下来,另一个作者进行的更改将丢失。 IETF WebDAV 工作组的目标是,设计一个协议,它提供基于标准的论坛中任何分布式创作工具需要的功能。 当前的 WebDAV 规范 (IETF RFC 2518) 解决协作式创作工具的三个主要问题:

· 改写保护。HTTP 1.1 无法确保客户端可以保护资源,并且可以在其他客户端同时编辑它们的情况下进行更改。 使用 WebDAV,可以通过多种方式来锁定资源,以便让其他客户端知道您对所讨论的资源感兴趣,或者防止其他客户端访问该资源。 · 资源管理。HTTP 只能直接访问单个资源。 WebDAV 提供一种更有效地组织数据的方法。 WebDAV 引入了可包含资源 的集合(类似于文件系统文件夹)概念。 通过 WebDAV 进行的资源管理包括如下功能:创建、移动、复制和删除集合,以及集合中的资源或文件。 · 文档属性。不同类型的数据具有唯一的属性,这有助于描述数据。 例如,在电子邮件中,这些属性可能是发件人的姓名和接收邮件的时间。 在协作文档中,这些属性可能是文档原始作者的姓名和最后一个编辑者的姓名。 因为人们使用的文档类型各不相同,所以可能的属性类型列表也变得无限大。 XML 是 WebDAV 所需的一种可扩展通讯工具。

使用 WebDAV 可以完成的工作包括

特性(元数据)处理。您可以使用 WebDAV 方法 PROPFIND 和 PROPPATCH 创建、删除和查询有关 Web 页面的信息,例如作者和创建日期。

集合和资源管理。您可以使用 WebDAV 方法 GET、PUT、DELETE 和 MKCOL 创建文档集合并检索分层结构成员列表(类似于文件系统中的目录列表)。

锁定。您可以使用 WebDAV 禁止多人同时对一个文档进行操作。可以通过 WebDAV 方法 LOCK 和 UNLOCK 使用互斥锁或共享锁,这将有助于防止出现“丢失更新”(更改被覆盖)的问题。

名称空间操作。您可以使用 WebDAV 方法 COPY 和 MOVE 让服务器复制和删除 Web 资源。

请求格式

HTTP 1.1(请参阅 IETF RFC 2068)提供一组可供客户端与服务器通讯的方法,并指定响应(从服务器返回发出请求的客户端)的格式。 WebDAV 完全采用此规范中的所有方法,扩展其中的一些方法,并引入了其他可提供所描述功能的方法。 WebDAV 中使用的方法包括: 1.Options、Head 和 Trace。 主要由应用程序用来发现和跟踪服务器支持和网络行为。 2.Get。 检索文档。 3.Put 和 Post。 将文档提交到服务器。 4.Delete。 销毁资源或集合。

  1. Mkcol。 创建集合。 6.PropFind 和 PropPatch。 针对资源和集合检索和设置属性。 7.Copy 和 Move。 管理命名空间上下文中的集合和资源。
  2. Lock 和 Unlock。 改写保护。 WebDAV 请求的一般结构遵循 HTTP 的格式。 并且由以下三个组件构成:
    1. 方法。 声明由客户端执行的方法(上面描述的方法)。 2.标头。 描述有关如何完成此任务的指令。 3.主体(可选)。 定义用在该指令或其他指令中的数据,用以描述如何完成此方法。 在主体组件中,XML 成为整个 WebDAV 结构中的关键元素。