Skip to main content

Appendix B. Notes on HTTP Client Compatibility (HTTP客户端兼容性说明)

附录 B. Notes on HTTP Client Compatibility (HTTP客户端兼容性说明)

WebDAV 被设计为向后兼容 HTTP 1.1, 并且已被证实是向后兼容的。PUT 和 DELETE 方法在 HTTP 中定义, 因此可以被 HTTP 客户端以及支持 WebDAV 的客户端使用, 但本规范中对 PUT 和 DELETE 的响应进行了扩展, 只有 WebDAV 客户端才能完全准备好处理这些扩展。关于这些响应是否会导致仅支持 HTTP 的客户端出现互操作性问题, 提出了一些理论上的担忧, 本节将讨论这些问题。

由于任何 HTTP 客户端都应该将无法识别的 400 级和 500 级状态码作为错误处理, 因此以下新状态码不应该出现任何问题: 422、423 和 507 (424 也是一个新的状态码, 但它只出现在 Multistatus 响应的正文中)。因此, 例如, 如果 HTTP 客户端尝试 PUT 或 DELETE 锁定的资源, 423 Locked 响应应该导致向用户呈现一般错误。

207 Multistatus 响应很有趣, 因为向集合发出 DELETE 请求的 HTTP 客户端可能会将 207 响应解释为成功, 即使它没有意识到该资源是集合, 也无法理解 DELETE 操作可能是完全或部分失败的。这种解释并不完全合理, 因为 200 级响应表示服务器 "收到、理解并接受" 了请求, 而不是请求导致了完全成功。

一个选项是服务器可以将集合的 DELETE 视为原子操作, 并在成功时使用 204 No Content, 或在错误时使用某个适当的错误响应 (400 或 500 级)。这种方法确实可以最大化向后兼容性。然而, 由于互操作性测试和工作组讨论没有发现 HTTP 客户端对 WebDAV 集合发出 DELETE 请求的任何实例, 因此这种担忧更多是理论上的而不是实际的。因此, 即使服务器将任何集合 DELETE 请求视为 WebDAV 请求并发送 207 Multi-Status 响应, 服务器也很可能完全成功地与 HTTP 客户端互操作。

总的来说, 鼓励服务器实现使用本文档中定义的详细响应和其他机制, 而不是为理论上的互操作性问题进行更改。