HTTP状态码

HTTP状态码(HTTP Status Code)是用来表示网页服务器HTTP响应状态的3位数字代码。

所有状态码的第一个数字代表了响应的五种状态之一。

  1. 1XX 消息
  2. 2XX 成功
  3. 3XX 重定向
  4. 4XX 客户端消息
  5. 5XX 服务器端消息
  6. 参考文献

1XX 消息

这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。

  1. 100 Countinue
    客户端应当继续发送请求
  2. 101 Switching Protocols
    服务器端已经理解了客户端的请求
  3. 102 Processing
    扩展的状态码,代表处理将被继续执行

2XX 成功

这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。

  1. 200 OK
    请求已成功,请求所希望的响应头或数据体将随此响应返回
  2. 201 Created
    请求已被实现,而且有一个新的资源已经依据请求的需要而创建,且其URI已经随Location头信息返回。假如需要的资源无法及时创建的话,应当返回’202 Accepted’。
  3. 202 Acceped
    服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。返回202状态码的响应的目的是允许服务器接受其他过程的请求(例如某个每天只执行一次的基于批处理的操作),而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。
  4. 203 Non-Authoritative Information
    服务器已成功处理请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。
  5. 204 No Content
    服务器成功处理请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。
  6. 205 Reset Content
    服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。
  7. 206 Partial Content
    服务器已经成功处理了部分GET请求;
    该请求必须包含Range头信息来指示客户端希望得到的内容范围,并且可能包含If-Range来作为请求条件。
  8. 207 Multi-Status

3XX 重定向

这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明。
当且仅当后续的请求所使用的方法是GET或者HEAD时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。
客户端应当自动监测无限循环重定向,按照HTTP/1.0版规范的建议,浏览器不应自动访问超过5次的重定向

  1. 300 Multiple Choices
    被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。
  2. 301 Moved Permanently
    被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。
  3. 302 Found
    请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
  4. 303 See Other
    被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。
  5. 304 Not Modified
    304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
  6. 305 Use Proxy
    被请求的资源必须通过指定的代理才能被访问。
  7. 306 Switch Proxy
    在最新版的规范中,306状态码已经不再被使用。
  8. 307 Temporary Redirect
    请求的资源现在临时从不同的URI响应请求。

4XX 客户端错误

这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。

  1. 400 Bad Request
    由于包含语法错误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
  2. 401 Unauthorized
    当前请求需要用户验证。
  3. 402 Payment Required
    该状态码是为了将来可能的需求而预留的。
  4. 403 Forbidden
    服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
  5. 404 Not Found
    请求失败,请求所希望得到的资源未被在服务器上发现。
  6. 405 Method Not Allowed
    请求行中指定的请求方法不能被用于请求相应的资源。
  7. 406 Not Acceptable
    请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
  8. 407 Proxy Authentication Required
    401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个Proxy-Authenticate用以进行身份询问。客户端可以返回一个Proxy-Authorization信息头用以验证。
  9. 408 Request Timeout
    请求超时。
  10. 409 Conflict
    由于和被请求的资源的当前状态之间存在冲突,请求无法完成。该响应应当包含足够的信息以便用户发现冲突的源头。
  11. 410 Gone
    被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
  12. 411 Length Required
    服务器拒绝在没有定义Content-Length头的情况下接受请求。
  13. 412 Precondition Failed
    服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
  14. 413 Request Entity Too Large
    服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。
  15. 414 Request-URI Too Long
    请求的URI长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。这
  16. 415 Unsupported Media Type
    对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
  17. 416 Requested Range Not Satisfiable
    如果请求中包含了Range请求头,并且Range中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义If-Range请求头,那么服务器就应当返回416状态码。
  18. 417 Expectation Failed
    在请求头Expect中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect的内容无法被满足。
  19. 421 There are too many connections from your internet address
    从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。
  20. 422 Unprocessable Entity
    请求格式正确,但是由于含有语义错误,无法响应。
  21. 423 Locked
    当前资源被锁定
  22. 424 Failed Dependency
    由于之前的某个请求发生的错误,导致当前请求失败。
  23. 426 Upgrade Required
    客户端应当切换到TLS/1.0。
  24. 449 Retry With
    由微软扩展,代表请求应当在执行完适当的操作后进行重试。
  25. 451 Unavailable For Legal Reasons
    (由IETF在2015核准后新增加)该访问因法律的要求而被拒绝。

5XX 服务器错误

这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
浏览器应当向用户展示任何在当前响应中被包含的实体。
这些状态码适用于任何响应方法。

  1. 500 Internal Server Error
    服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
  2. 501 Not Implemented
    服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
  3. 502 Bad Gateway
    作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  4. 503 Service Unavailable
    由于临时的服务器维护或者过载,服务器当前无法处理请求
  5. 504 Gateway Timeout
    作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
  6. 505 HTTP Version Not Supported
    服务器不支持,或者拒绝支持在请求中使用的HTTP版本
  7. 506 Variant Also Negotiates
    代表服务器存在内部配置错误。
  8. 507 Insufficient Storage
    服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。
  9. 509 Bandwidth Limit Exceeded
    服务器达到带宽限制。这不是官方代码,但仍被使用。
  10. 510 Not Extended
    获取资源所需要的策略并没有被满足。

参考文章

维基百科-HTTP状态码