为什么服务器会禁止 HTTP HEAD 请求?

5
我发现有些服务器对HEAD请求响应HTTP 405(或其他状态码,包括404,这在我看来很令人困惑,但现在并不重要),即使GET请求返回HTTP 200。HTTP 405被定义为:定义...

405方法不允许

请求行中指定的方法不允许对由请求URI标识的资源执行操作。响应必须包含一个Allow头,其中列出了请求的资源的有效方法列表。

好吧,我查看了Allow头,并发现我可以使用GET获取该资源(即使我只想找出该资源是否存在)。问题解决了。
然而,我的问题是...为什么服务器会禁用HEAD方法?有什么优势吗?可能有安全原因吗?

1
我认为你不会得到一个明确的答案,其中一种可能性是试图加强应用程序的防御能力,但这是否值得是主观的 - 请参见http://security.stackexchange.com/questions/111616/http-head-and-its-security-versus-operational-uses。 - Alex K.
1
愚蠢可能是我能想到的唯一原因... - Julian Reschke
2
我投票关闭此问题,因为它不是一个编程问题。相反,它是关于不允许的HTTP方法的问题。将来,我建议在[sf]或[security.se]上提出有关此主题的问题。 - Stephen Ostermiller
1个回答

5
我认为这是因为他们的HTTPS-only网站通过HTTP接收了大量的HEAD请求,导致他们的日志中充满了“仅可通过SSL访问请求的资源”错误。我认为他们混淆了“方法”和“协议”,所以认为405是有意义的。参见此帖子,其中有人询问该问题并被告知返回405状态码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接