WebDAV

Generated by claude-sonnet-5

WebDAV

WebDAV(Web Distributed Authoring and Versioning)是对 HTTP 协议的扩展,由 IETF 制定(RFC 4918),让 Web 服务器不只是只读地提供网页,还能支持远程文件的创建、编辑、移动、删除、加锁等操作——本质上是把远程服务器上的目录变成一个可以像本地磁盘一样读写的文件系统。

核心思路

普通 HTTP 主要就是 GET(读取)和有限的 POST。WebDAV 在此基础上新增了一批方法:

  • PUT —— 上传/写入文件
  • DELETE —— 删除文件
  • MKCOL —— 创建目录(collection)
  • COPY / MOVE —— 复制/移动文件
  • PROPFIND —— 查询文件属性(类似 ls -l
  • LOCK / UNLOCK —— 加锁,避免多人同时写冲突

实际应用场景

  • Nextcloud / ownCloud 私有云盘,底层就是 WebDAV,所以你能像挂载网盘一样把它接入 macOS 的访达(Finder → 连接服务器 → 填 WebDAV 地址)。
  • 很多 NAS(群晖、威联通等)、部分 Git 托管、以及像 Apple 自己的一些服务,底层也用到 WebDAV 做文件同步。

一句话理解:WebDAV 让 HTTP 服务器变成可读写的远程硬盘,而 CalDAV/CardDAV 只是在这块硬盘上,针对日历和通讯录这两类特定数据格式定义了标准的存取方式。

CalDAV

CalDAV(Calendaring Extensions to WebDAV)是 WebDAV 在日历数据场景下的扩展规范,由 IETF 制定(RFC 4791),专门定义了如何用 WebDAV 这套读写机制来存取日历事件、待办事项等数据。

核心思路

  • 日历数据以 iCalendar 格式(即 .ics 文件)存储在服务器上,每个日历是一个 WebDAV collection,每个事件是其中的一个资源
  • 在 WebDAV 基础方法之上,CalDAV 新增了针对日历场景的查询方式,比如 REPORT 方法配合 calendar-query,可以按时间范围、事件类型等条件过滤查询(而不是把整个日历都下载下来)
  • 支持双向同步:客户端改了事件会写回服务器,服务器上其他人改了也能同步到客户端,天然适合多设备、多人协作的场景

实际应用场景

  • Apple 日历、Google Calendar、Nextcloud、Fastmail、Thunderbird 等几乎所有主流日历客户端和服务都支持 CalDAV
  • 因为是开放标准而非某家公司私有协议,才实现了苹果日历订阅 Google 账户这种跨厂商互通——本质上就是苹果日历作为 CalDAV 客户端,连接到了 Google 的 CalDAV 服务器

一句话理解:CalDAV 就是让不同厂商的日历软件之间能够读写同一份日历数据的通用语言。

CardDAV

CardDAV(vCard Extensions to WebDAV)是 WebDAV 在通讯录数据场景下的扩展规范,由 IETF 制定(RFC 6352),思路和 CalDAV 几乎一致,只是把存取对象换成了联系人信息。

核心思路

  • 联系人数据以 vCard 格式(.vcf 文件)存储,每个通讯录是一个 collection,每个联系人是其中的一个资源
  • 同样支持 REPORT 方法做条件查询(比如按分组、按更新时间筛选联系人)
  • 同样支持双向同步:在手机上改了一个联系人的电话号码,会同步回服务器,进而同步到其他登录同一账户的设备

实际应用场景

  • iCloud 通讯录、Google 联系人、Nextcloud 通讯录、Fastmail 等都基于 CardDAV
  • 换手机、换系统时能无缝迁移联系人,很大程度上就是靠这套标准协议,而不是依赖某个厂商的私有导入导出格式

一句话理解:CardDAV 是 CalDAV 的姊妹协议,把同样一套 WebDAV 读写机制用在了联系人数据上,让通讯录也能跨平台、跨厂商同步。

posted @ 2026-07-06 01:23  undefined443  阅读(23)  评论(0)    收藏  举报