Skip to main content

附录B. HTTP客户端兼容性注意事项 (Notes on HTTP Client Compatibility)

附录B. HTTP客户端兼容性注意事项 (Notes on HTTP Client Compatibility)

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客户端互操作时完全成功。

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