HTTP状态码

HTTP状态码是用以表示网页服务器超文本传输协议响应状态的3位数字代码。HTTP状态码是服务器在响应客户端请求时返回的三位数字代码,每个代码代表一种特定的响应状态。

状态码的第一位数字表示响应的类别,总共有五大类:

  1. 1xx: 信息性状态码
  2. 2xx: 成功状态码
  3. 3xx: 重定向状态码
  4. 4xx: 客户端错误状态码
  5. 5xx: 服务器错误状态码

官方HTTP状态码

标准的HTTP状态代码是由IETF(互联网工程任务组)在各种RFC(请求评论)文档中定义的。它们是用于客户端和服务器之间通信的标准化响应代码。HTTP状态码的官方注册表由Internet Assigned Numbers Authority(互联网号码分配局)维护。

1xx: 信息性状态码

这些状态码表示请求已被接收,需要继续处理。

  • 100 Continue: 客户端应继续其请求。
  • 101 Switching Protocols: 服务器正在根据客户端的请求切换协议。
  • 102 Processing: 服务器已接受请求,但尚未处理完毕(WebDAV)。
  • 103 Early Hints: 服务器发送初步响应,帮助客户端提前加载资源。

2xx: 成功状态码

这些状态码表示请求已成功接收、理解并处理。

  • 200 OK: 请求成功。
  • 201 Created: 请求成功,并且创建了新的资源。
  • 202 Accepted: 请求已接受,但尚未处理完成。
  • 203 Non-Authoritative Information: 请求成功,但返回的元信息不是来自服务器的原始资源。
  • 204 No Content: 请求成功,但没有返回内容。
  • 205 Reset Content: 请求成功,请客户端重置视图。
  • 206 Partial Content: 服务器成功处理了部分请求。
  • 207 Multi-Status: 多个状态码返回(WebDAV)。
  • 208 Already Reported: 当前资源的成员已经在(一个之前的)多状态响应中列出(WebDAV)。
  • 226 IM Used: 服务器完成了对资源的IM(实例操纵)。

3xx: 重定向状态码

这些状态码表示客户端需要采取进一步的操作以完成请求。

  • 300 Multiple Choices: 多种选择。
  • 301 Moved Permanently: 资源已永久移动到新位置。
  • 302 Found: 临时重定向,资源暂时位于其他位置。
  • 303 See Other: 查看其他位置。
  • 304 Not Modified: 资源未修改,客户端可以使用缓存版本。
  • 305 Use Proxy: 必须通过代理访问资源(已废弃)。
  • 306 Switch Proxy: 已废弃,不再使用。
  • 307 Temporary Redirect: 临时重定向,使用相同的方法访问不同的URL。
  • 308 Permanent Redirect: 永久重定向,使用相同的方法访问不同的URL。

4xx: 客户端错误状态码

这些状态码表示客户端可能存在错误,阻止服务器处理请求。

  • 400 Bad Request: 服务器无法理解请求。
  • 401 Unauthorized: 请求未授权,客户端需要进行身份验证。
  • 402 Payment Required: 保留状态码,未来使用。
  • 403 Forbidden: 服务器拒绝请求。
  • 404 Not Found: 服务器找不到请求的资源。
  • 405 Method Not Allowed: 请求方法不被允许。
  • 406 Not Acceptable: 服务器无法根据客户端请求的内容特性返回响应。
  • 407 Proxy Authentication Required: 客户端必须在代理服务器上进行身份验证。
  • 408 Request Timeout: 服务器在等待请求时超时。
  • 409 Conflict: 请求与服务器当前状态发生冲突。
  • 410 Gone: 请求的资源已永久删除。
  • 411 Length Required: 服务器拒绝接受不带Content-Length头的请求。
  • 412 Precondition Failed: 服务器未满足请求中的前提条件。
  • 413 Payload Too Large: 请求实体过大,服务器无法处理。
  • 414 URI Too Long: 请求的URI过长,服务器无法处理。
  • 415 Unsupported Media Type: 请求的媒体格式不受支持。
  • 416 Range Not Satisfiable: 请求范围不符合资源范围。
  • 417 Expectation Failed: 服务器无法满足Expect请求头字段的要求。
  • 418 I’m a teapot: 用于愚人节玩笑的状态码。
  • 421 Misdirected Request: 请求被定向到无法产生响应的服务器。
  • 422 Unprocessable Entity: 语义错误,无法响应(WebDAV)。
  • 423 Locked: 当前资源被锁定(WebDAV)。
  • 424 Failed Dependency: 前一个请求失败(WebDAV)。
  • 425 Too Early: 服务器拒绝处理可能重放的请求。
  • 426 Upgrade Required: 客户端应切换到其他协议。
  • 428 Precondition Required: 需要先决条件。
  • 429 Too Many Requests: 请求过多,客户端被限流。
  • 431 Request Header Fields Too Large: 请求头字段过大,服务器无法处理。
  • 451 Unavailable For Legal Reasons: 因法律原因不可用。

5xx: 服务器错误状态码

这些状态码表示服务器在处理请求时发生错误。

  • 500 Internal Server Error: 服务器遇到未知错误。
  • 501 Not Implemented: 服务器不支持请求的方法。
  • 502 Bad Gateway: 网关或代理服务器收到无效响应。
  • 503 Service Unavailable: 服务器暂时不可用,通常是由于维护或过载。
  • 504 Gateway Timeout: 网关或代理服务器在等待上游服务器响应时超时。
  • 505 HTTP Version Not Supported: 服务器不支持请求的HTTP协议版本。
  • 506 Variant Also Negotiates: 服务器内部配置错误。
  • 507 Insufficient Storage: 服务器无法存储完成请求所需的内容(WebDAV)。
  • 508 Loop Detected: 服务器检测到无限循环(WebDAV)。
  • 510 Not Extended: 服务器需要进一步扩展请求。
  • 511 Network Authentication Required: 需要网络身份验证。

非官方HTTP状态码

上述状态代码是标准化的,但在实际应用中,有时会出现非标准的状态代码。这些状态代码通常由特定的服务或软件定义,以表示特定的错误或状态。

1. 218 “Good”

  • 定义者: Apache
  • 用途: 用于表示“良好”的请求。这是一个非官方状态码,主要用于Apache服务器的某些定制设置。

2. 419 “Page Expired”

  • 定义者: Laravel 框架
  • 用途: 表示页面过期,通常与会话或CSRF令牌相关。

3. 420 “Method Failure”

  • 定义者: Spring Framework
  • 用途: 表示方法执行失败。这是一个非官方状态码,用于表示在处理请求时发生错误。

4. 420 “Enhance Your Calm”

  • 定义者: Twitter
  • 用途: 这个状态码用于表示用户的请求被限流,因为请求过于频繁,服务器要求用户减缓请求速度。

5. 430 “Request Header Fields Too Large”

  • 定义者: Shopify
  • 用途: 表示请求头字段过大,服务器无法处理。这与RFC 2616中的431状态码类似,但为非官方扩展。

6. 440 “Login Timeout”

  • 定义者: IIS
  • 用途: 表示会话超时,用户需要重新登录。

7. 444 “No Response”

  • 定义者: nginx
  • 用途: 表示服务器关闭连接而不返回任何响应。这通常用于拦截恶意请求或不需要回应的请求。

8. 449 “Retry”

  • 定义者: IIS
  • 用途: 表示请求应重新提交。这通常用于指示客户端需要进行某些调整后再尝试请求。

9. 450 “Blocked by Windows Parental Controls”

  • 定义者: Microsoft
  • 用途: 表示请求被Windows家长控制设置阻止。

10. 451 “Redirect”

  • 定义者: IIS
  • 用途: 用于指示请求被重定向。

11. 460

  • 定义者: AWS Elastic Load Balancer
  • 用途: 表示负载均衡器的内部错误。

12. 463

  • 定义者: AWS Elastic Load Balancer
  • 用途: 表示负载均衡器遇到的请求错误。

13. 494 “Request Header Too Large”

  • 定义者: nginx
  • 用途: 表示请求头字段过大,服务器无法处理。

14. 495 “SSL Certificate Error”

  • 定义者: nginx
  • 用途: 表示SSL证书错误,客户端证书无效。

15. 496 “SSL Certificate Required”

  • 定义者: nginx
  • 用途: 表示需要客户端提供SSL证书。

16. 497 “HTTP Request Sent to HTTPS Port”

  • 定义者: nginx
  • 用途: 表示HTTP请求发送到了HTTPS端口。

17. 498 “Invalid Token”

  • 定义者: Esri
  • 用途: 表示请求中的Token无效。

18. 499 “Client Closed Request”

  • 定义者: nginx
  • 用途: 表示客户端在服务器处理请求之前关闭了连接。

19. 499 “Token Required”

  • 定义者: Esri
  • 用途: 表示请求需要Token,但未提供。

20. 509 “Bandwidth Limit Exceeded”

  • 定义者: Apache 和 cPanel
  • 用途: 表示服务器的带宽限制已被超出。

21. 520 “Web Server Returned an Unknown Error”

  • 定义者: Cloudflare
  • 用途: 表示服务器返回了未知错误。

22. 521 “Web Server Is Down”

  • 定义者: Cloudflare
  • 用途: 表示上游服务器不可用或关闭。

23. 522 “Connection Timed Out”

  • 定义者: Cloudflare
  • 用途: 表示与上游服务器的连接超时。

24. 523 “Origin Is Unreachable”

  • 定义者: Cloudflare
  • 用途: 表示无法到达上游服务器。

25. 524 “A Timeout Occurred”

  • 定义者: Cloudflare
  • 用途: 表示上游服务器响应超时。

26. 525 “SSL Handshake Failed”

  • 定义者: Cloudflare
  • 用途: 表示SSL握手失败。

27. 526 “Invalid SSL Certificate”

  • 定义者: Cloudflare
  • 用途: 表示上游服务器提供的SSL证书无效。

28. 527 “Railgun Error”

  • 定义者: Cloudflare
  • 用途: 表示Cloudflare的Railgun服务出现错误。

29. 529 “Site Overloaded”

  • 定义者: Qualys
  • 用途: 表示站点超载,无法处理请求。

30. 530 “Site Frozen”

  • 定义者: Pantheon
  • 用途: 表示站点被冻结,通常由于计费问题或其他原因。

31. 561 “Unauthorized”

  • 定义者: AWS Elastic Load Balancer
  • 用途: 表示请求未经授权,类似于401状态码,但用于AWS的负载均衡器。

32. 598 “Network Read Timeout Error”

  • 定义者: 某些HTTP代理
  • 用途: 表示网络读取超时错误。这是一个非正式状态码,通常在代理服务器或负载均衡器中使用。
上一篇
下一篇