HTTP 405 - Web服务器合规性

时间:2013-03-28 14:42:51

标签: http rest web web-frameworks

The RFC州:

  

10.4.6 405不允许的方法

     

请求行中指定的方法不允许使用     Request-URI标识的资源。响应必须包括一个     允许包含所请求的有效方法列表的标头     资源。

但是,我一直无法确定一台符合该规定的服务器。

我可以看到,鉴于存在各种代理,动态应用程序等,现代Web服务器很难实现该要求非常

  1. 从历史上看,为什么这个要求有意义?
  2. 有什么依赖于这种行为,还是曾经做过?它的用例是什么?
  3. 任何网络服务器“正确”实现http的这个方面? IIS(至少在使用ASP.NET时)甚至一些“RESTful”API在给出伪造方法时返回404而不是405,据我所知。
  4. 此外,为什么服务器返回405用于BOGUS等明显未由服务器实现的方法,即使在提供文档而不代理或调用某些代码(cgi / etc)时,它们应该返回501?

    如果HTTP的这些部分被认为是“残留的”,那么看看是否有任何服务器符合规范?


    实际上,大多数框架都没有那么难以正确地返回'允许'。我所知道的所有框架都需要指定将要调用特定控制器的方法(通常默认为GET),并且代码可以轻松地使用框架注册扩展方法以便返回。

    到目前为止,证据似乎指出a)没有人阅读规范而且没有人知道这个要求,b)没有人关心这个特征。

1 个答案:

答案 0 :(得分:2)

尝试直接回答问题:

  1. 要求仍然是有道理的,尤其是 - 正如Meryn's comment对HATEOAS API所说的那样。

  2. 由于a server is "An application program that accepts connections in order to service requests by sending back responses"很容易说是 - 因此网上有应用依赖它。 ;)一个这样的用例是使用405POST /resource/1/回复Allow: GET, HEAD, PUT, DELETE,以表明该资源不是"factory resource"

  3. 由于资源允许的方法因应用程序逻辑而异,我们还应该考虑应用程序服务器 - 正如您在问题中指出的那样。在这种情况下,是 - 例如,django returns a proper Allow header with 405 responses