HTTP状态代码"无法满足*已知*原因的请求"

Ale*_*lls 9 http web server

HTTP 500表示服务器因意外原因无法满足请求.当服务器由于已知预期的原因无法满足请求时,使用的最佳HTTP响应代码是什么?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

通过HTTP查看一些文档,我找不到一个好的答案,它似乎是一个重要的区别.为一个并不真正代表"内部服务器错误"的错误抛出500可能不是一个好习惯.

cas*_*lin 42

请勿使用RCF 2616作为参考

自2014年6月以来,RCF 2616已被RFC 7231废弃,后者成为HTTP/1.1协议语义和内容的当前参考.

什么是已知或预期的原因

根据已知或预期的原因,您可以返回正确的状态代码:

  • 无法满足请求,因为客户端正在重新报告不存在的资源?回来一个404.
  • 这是授权问题吗?去吧403.
  • 使用HTTP身份验证和凭据无效?回来一个401.
  • 服务器是否支持完成请求所需的功能?使用501.
  • 由于与目标资源的当前状态发生冲突,请求无法完成吗?所以409应该归还.
  • 目标资源是否已分配新的永久URI?该301状态代码是正确的选择.
  • 等等...

决策图

有关更多详细信息,请查看RFC 7231并查看Racksburg 的以下决策图:


状态代码分为三大类:

HTTP状态代码类别


从这里开始:

HTTP状态代码



选择2xx3xx状态代码


HTTP 2xx和3xx状态代码



选择4xx状态代码


HTTP 4xx状态代码



选择5xx状态代码


HTTP 5xx状态代码

  • 图形很棒。谢谢你向我介绍420“增强你的冷静”XD (3认同)