208 是什么
208 Already Reported 是 WebDAV 的批量响应优化码(RFC 5842 §7.1):同一个资源通过多个绑定路径出现在一次 multistatus(207)响应里时,服务器用 208 标记重复项,避免把同一资源的属性重复枚举一遍。它只在 207 的子项里有意义,不是顶层状态码,也不会单独作为一次请求的最终响应出现。
基本信息
| 名称 | 208 Already Reported |
|---|---|
| 类别 | 2xx(仅作为 207 子项) |
| 规范 | RFC 5842 §7.1(WebDAV 绑定) |
| 前提 | 服务端支持 DAV bind 特性 |
| 现状 | 极冷门,普通 REST 接口不会遇到 |
| 字面含义 | 前面已经报告过该资源,不再重复 |
典型使用场景
- WebDAV 服务端实现者处理绑定关系与循环枚举
- 排查 WebDAV 客户端同步结果异常:某些资源为何只出现一次
- 理解 207 容器与子项状态码之间的父子关系
- 为 CalDAV/CardDAV 客户端解释重复项缺失的原因
- 协议实现评审:确认批量接口是否需要 208 这类去重标记
- 日志统计:区分「被去重」与「真的失败」两类子项
多状态响应结构
多状态响应结构
HTTP/1.1 207 Multi-Status
<D:multistatus>
<D:response><D:href>/col/a</D:href> ... 200 # 首次报告该资源
<D:response><D:href>/col/b</D:href> ... 208 # 同一资源,前文已报告
</D:multistatus>
# 208 表示去重,不是错误;客户端应复用前文的处理结果207 子项状态码
| 状态码 | 含义 | 客户端处理 |
|---|---|---|
| 200 / 201 | 该子操作成功 | 继续处理其余子项 |
| 208 | 该绑定已在前文报告,不重复枚举 | 复用前面同 href 的结论 |
| 424 | 因其他子项失败而未执行 | 定位真正的失败项 |
| 507 | 存储不足导致失败 | 清理空间后重试 |
208 不是错误,而是服务器去重的结果,客户端直接复用前面相同 href 的处理结论即可。
绑定(bind)是 WebDAV 的冷门扩展:只用文件属性与锁能力的普通 WebDAV 服务不会出现 208。
普通 REST 接口不会返回 208;若在非 WebDAV 服务上见到,先确认中间件或框架是否误映射了状态码。
一个成员若有多个绑定路径,通常只有首个被完整枚举,其余标记 208,因此结果条数少于绑定数量属于正常现象。