1

我发现其中一个 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 客户端错误?

4

4 回答 4

2

RFC4918 状态:

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

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

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

于 2013-06-04T13:18:28.420 回答
2

来自 RFC 2616

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

这表明只有在支持 GET 时才应在资源上支持 HEAD。

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

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

于 2013-05-16T20:53:15.070 回答
1

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

于 2014-06-21T04:55:31.500 回答
1

是的。它是 RFC 2616 的要求。

于 2013-05-16T07:28:10.687 回答