# WebDAV 存放点

WebDAV 是加密对象存放点传输，需要 `webdav` feature；与 Directory、S3 共用相对对象路径及 `cipherfs-store.json` 描述文件，不是明文 WebDAV 文件服务。

桌面 App 在 **Sync & storage → WebDAV → Add WebDAV store** 注册集合，CLI 与原生 API 也支持。Basic 凭据仅经认证的私有归属通道传递并保留在会话，公开 TCP 不接收；密封或退出即清除，重新打开后再提供。使用 HTTPS；只有显式回环 IP 的本机服务允许 HTTP。URL 不接受凭据、查询参数和 fragment，重定向不转发凭据。

同一套不可变存放点契约在两个独立真实服务上运行：

| 服务 | 验证 |
| --- | --- |
| Apache HTTP Server 2.4.65，mod_dav/mod_dav_fs | 条件创建、描述文件、HEAD/GET/Range、流式传输、Depth1 分页、签名双设备同步、认证与过期，以及归属发布故障测试 |
| WsgiDAV 4.3.5 + Cheroot 10.0.1 | 原样运行同一契约，包含 32 MiB 对象及签名双设备同步 |

两者都使用合成认证用户和自有临时数据。WsgiDAV 依赖固定版本与 PyPI 分发哈希，安装和执行仅在固定测试容器中；完整工作区门槛包含第二种服务。桌面的进程内归属和附着客户端注册另在宿主对真实 Apache 夹具验证。

其他服务必须支持认证 HEAD/GET/PUT/DELETE、集合创建、有界 Depth1 PROPFIND 和原子 `If-None-Match: *` 创建。发布真实对象前会探测条件创建，覆盖已有探针的服务被拒；对象长度及密文身份独立验证，列举和 ETag 不作为完整性或删除权证明。Range 单独探测，缺少 Range 不意味着可以无界下载。

multistatus 可忽略有界的额外 DAV/厂商属性子树；必需的 DAV 结构、成功属性、准确长度、直接子项范围和响应预算仍严格检查。厂商命名空间的同名字段不能冒充必需 DAV 字段。对象路径使用规范对象字母表，不接收任意明文文件名。

兼容验收仅覆盖表内两个服务，不代表所有云厂商、反向代理或认证方式。Digest、仅 OAuth 的服务、经重定向转发凭据及真实云账号不在这些测试的验收范围；新服务部署前应通过相同的不可变存放点契约。
