首页/网络/协议速查/207 Multi-Status 多状态
HTTP 方法与状态码91 条

207 Multi-Status 多状态

WebDAV 批量操作的响应:一个响应体内携带多个子操作的独立状态(XML multistatus 格式)。

协议速查网络更新于 2026-10-13

207 是什么

207 Multi-Status 是 WebDAV 批量操作的响应码:一个响应体里携带多个子项各自的处理结果,用 XML 结构表达。它代表「请求已经被处理」,而不是「所有子项都成功」——某个文件删掉了、另一个文件因为被锁定而失败,这种混合结果正是它存在的意义。规范定义在 RFC 4918 第 11.1 节。

基本信息

状态码207 Multi-Status
语义批量操作逐项报告结果
规范RFC 4918 §11.1
内容类型XML 的多状态结构
出现场景WebDAV 的批量属性查询与批量更新
判读要求必须解析响应体才能知道各项结果

多状态响应片段

多状态响应片段
<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/a.txt</D:href>
    <D:status>HTTP/1.1 200 OK</D:status>
  </D:response>
  <D:response>
    <D:href>/b.txt</D:href>
    <D:status>HTTP/1.1 423 Locked</D:status>
  </D:response>
</D:multistatus>

子项状态读法

子项状态含义处理建议
200该项处理成功继续下一项
404目标不存在确认路径后决定是否忽略
423资源被锁定等待释放或先解锁再重试
403权限不足检查账号对该路径的权限

典型使用场景

  • 批量删除或移动文件:逐项确认哪些成功、哪些失败
  • 批量属性查询:一次取回多个资源的属性
  • 自动化同步脚本:按子项结果分别处理失败项
  • 监控与告警:避免只统计外层状态码而漏掉部分失败
  • 客户端开发:实现逐项重试而不是整体重放
207 的外层状态是成功,子项却可能失败。把 207 直接当 200 处理,会让批量操作里的失败被静默吞掉:表面上任务报告成功,实际上有一部分文件没有生效,这类问题往往在很久之后才被发现。
解析这类响应要以命名空间为准:元素前缀可以任意命名,只按前缀字符串匹配的话,换一个服务端实现就会全部解析失败。批量操作前建议先落一份目标清单,失败项单独重试,而不是把整个批次重放一遍,这样既省时间也避免重复执行已成功的项。

易错点

  • 把 207 当成整体成功:部分失败被忽略,数据状态与预期不一致
  • 监控只采集外层状态码,批量操作的失败率长期为零却实际存在
  • 失败后整体重放整个批次,已成功的项被重复执行
  • 解析响应体时忽略命名空间,字段匹配不上导致全部判为失败
  • 未区分锁定与权限两类失败,用同一种重试策略处理

数据来源与参考

  • RFC 4918 §11.1 207 Multi-Status

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌