Skip to main content

WebDAV 核心方法

WebDAV (Web Distributed Authoring and Versioning) 是 HTTP 的扩展,允许客户端在 Web 服务器上执行远程内容管理操作。以下是 WebDAV 规范中定义的核心方法。

基础 HTTP 方法

WebDAV 利用了基础的 HTTP 方法,并为文件操作提供了新的语义:

方法描述用途
GET获取资源内容下载文件
HEAD获取资源元信息获取文件元数据,不下载内容
POST创建新资源一般用途较少,常用于复杂操作
DELETE删除资源删除文件或目录
PUT上传资源内容上传或覆盖文件

WebDAV 扩展方法

WebDAV 规范 (RFC 4918) 添加了以下核心方法:

方法描述相关参数
PROPFIND获取资源属性Depth: 控制递归深度 (0, 1, infinity)
PROPPATCH设置或删除资源属性通过 XML 主体指定属性修改
MKCOL创建集合(目录)不能用于已存在的资源
COPY复制资源Destination: 目标 URI
Overwrite: 是否覆盖
Depth: 递归深度
MOVE移动资源Destination: 目标 URI
Overwrite: 是否覆盖
LOCK锁定资源Lock-Token: 锁令牌
Timeout: 锁超时
Depth: 锁定深度
UNLOCK解锁资源Lock-Token: 要解锁的令牌

方法功能对照表

如果将 WebDAV 方法映射到文件系统操作,可以这样理解:

WebDAV 方法文件系统操作功能描述
GETcat, 读取读取文件内容
PUTecho > file, 写入上传文件内容
DELETErm, rmdir删除文件或目录
MKCOLmkdir创建目录
COPYcp复制文件或目录
MOVEmv移动或重命名文件/目录
PROPFINDls, stat列出目录内容或文件属性
PROPPATCHchmod, chown修改文件属性
LOCKflock锁定文件,防止并发修改
UNLOCK释放 flock解除文件锁定

常见响应状态码

WebDAV 操作中常见的 HTTP 状态码:

  • 200 OK - 请求成功
  • 201 Created - 资源创建成功
  • 204 No Content - 操作成功但无返回内容
  • 207 Multi-Status - 多状态响应,包含多个子响应
  • 403 Forbidden - 操作被禁止
  • 404 Not Found - 资源不存在
  • 409 Conflict - 资源冲突
  • 412 Precondition Failed - 前置条件失败
  • 423 Locked - 资源被锁定
  • 507 Insufficient Storage - 存储空间不足

基础 WebDAV 使用示例

# 列出目录内容
curl -X PROPFIND --header "Depth: 1" https://webdav.example.com/

# 创建目录
curl -X MKCOL https://webdav.example.com/newdir/

# 上传文件
curl -T localfile.txt https://webdav.example.com/remotefile.txt

# 下载文件
curl -O https://webdav.example.com/remotefile.txt

# 删除文件
curl -X DELETE https://webdav.example.com/remotefile.txt

# 移动/重命名
curl -X MOVE --header "Destination: https://webdav.example.com/newname.txt" \
https://webdav.example.com/oldname.txt

扩展和规范

WebDAV 核心规范 (RFC 4918) 的基础上,还有多个扩展规范:

  • DeltaV (RFC 3253) - 版本控制
  • ACL (RFC 3744) - 访问控制
  • SEARCH (RFC 5323) - 服务器端搜索
  • CalDAV (RFC 4791) - 日历扩展
  • CardDAV (RFC 6352) - 通讯录扩展