【问题标题】:Should WebDAV server support HEAD on folders?WebDAV 服务器应该在文件夹上支持 HEAD 吗?
【发布时间】:2013-05-16 03:04:08
【问题描述】:

我发现其中一个 WebDAV 客户端正在向 WebDAV 文件夹(集合)发送 HEAD 请求。我正在测试的 WebDAV 服务器不支持文件夹上的 HEAD,并以 HTTP/1.1 405 Method Not Allowed 进行响应。 WebDAV 客户端连接失败。

[Request]
HEAD /
Connection: Keep-Alive
Accept-Encoding: gzip,deflate
Host: localhost:5182

[Response]
HTTP/1.1 405 Method Not Allowed

WebDAV 服务器应该支持文件夹上的 HEAD 还是 WebDAV 客户端错误?

【问题讨论】:

    标签: request webdav head


    【解决方案1】:

    来自 RFC 2616

    HEAD 方法与 GET 相同,只是服务器不能 在响应中返回消息体。包含的元信息 在响应 HEAD 请求的 HTTP 标头中应该是相同的 响应 GET 请求而发送的信息

    这表明只有支持 GET 的资源才应支持 HEAD。

    许多服务器不会对文件夹实施 GET,因此不实施 HEAD 是合理的。所以对我来说,这听起来像是一个客户端错误。

    客户端应该改为执行 OPTIONS 以进行能力发现。

    【讨论】:

    • 这意味着 HEAD 请求应该返回标头而不是正文,而不是根本没有响应。
    【解决方案2】:

    RFC4918 状态:

    同样,由于 HEAD 的定义是一个没有响应消息体的 GET,所以 HEAD 的语义在应用于集合资源时不会被修改。

    所以是的,它应该支持它。

    http://www.webdav.org/specs/rfc4918.html#rfc.section.9.4

    【讨论】:

      【解决方案3】:

      是的。它是 RFC 2616 的要求。

      【讨论】:

        【解决方案4】:

        HEAD 方法基本上是“如果我调用 GET,标题会是什么?”现在确实是由 WebDAV 服务器来确定它应该为文件夹上的 GET 返回什么。它几乎总是索引(html 格式)或“未找到”响应(404)。发送“不允许的方法”并不是一个很好的实现。这意味着不允许目录浏览,这在 WebDAV 服务器上完全没有意义。换句话说,对文件夹的 HEAD 请求应该几乎总是返回 HTML 索引(减去响应正文)或 404 错误。 404 的目的是通知客户端没有与请求的 url 的最后一段匹配的文档。

        【讨论】:

        • 同意,但如果集合存在,则 404 没有任何意义。
        • 嗯,这取决于 HTTP 方法。如果您(WebDAV 服务器)收到对集合(文件夹)的 GET 请求,您应该返回什么?一个html索引文件?包含集合全部内容的压缩文件夹/zip 文件?大多数 WebDAV 服务器将 GET 方法(以及随后的 HEAD 方法)视为对资源的请求,而不是发现方法。这就是 PropFind 的用途。换句话说,一个成功的 GET 方法应该返回内容,返回 html 索引文件的服务器这样做是为了方便客户端(如果他们使用 Web 浏览器),而不是为了一致性。
        • Paul Easter:有疑问,返回空白页。但是,当该 URI 确实有资源时,不要说 404。
        • @JulianReschke 我没有说要对存在的东西返回 404。我说不要用 405 响应 GET 方法(不允许使用方法)。我说过 404 是 GET 请求的两个正确响应代码之一(在 WebDav 中)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        相关资源
        最近更新 更多