tigtools

HTTP 状态码

查询任意 HTTP 状态码:了解其含义、服务器何时会发送,以及由哪份规范定义。按数字或关键词搜索,按分类筛选,也可以直接链接到某个状态码。

在浏览器中运行 无需注册

已显示 79 个状态码

  • 100 Continue

    服务器已收到请求标头,客户端可以继续发送请求正文。客户端在上传较大的请求正文前发送“Expect: 100-continue”时会遇到此状态码。

    定义于 RFC 9110

  • 101 Switching Protocols

    服务器同意切换到客户端在 Upgrade 标头中请求的协议。连接升级为 WebSocket 时会遇到此状态码。

    定义于 RFC 9110

  • 102 Processing

    已废弃或未使用

    服务器已接受 WebDAV 请求,但尚未处理完成。此状态码已从后续的 WebDAV 规范中移除,如今很少使用。

    定义于 RFC 2518

  • 103 Early Hints

    在最终响应发出前发送,以便浏览器预加载 Link 标头中列出的资源。CDN 和服务器会用它来加快页面加载。

    定义于 RFC 8297

  • 200 OK

    请求成功,响应中包含结果。这是页面加载或 API 调用成功时的常见响应。

    定义于 RFC 9110

  • 201 Created

    请求成功并创建了新资源,通常由 Location 标头指定。成功 POST 请求并创建记录后,通常会返回此状态码。

    定义于 RFC 9110

  • 202 Accepted

    请求已被接受处理,但尚未完成。用于将任务加入队列的 API,例如导出或批量任务。

    定义于 RFC 9110

  • 203 Non-Authoritative Information

    请求成功,但转换代理修改了源服务器返回的内容。

    定义于 RFC 9110

  • 204 No Content

    请求成功,没有内容需要返回。常用于 DELETE 请求,以及客户端不需要响应正文的数据保存操作。

    定义于 RFC 9110

  • 205 Reset Content

    请求成功,客户端应重置文档视图,例如清空表单。此状态码很少使用。

    定义于 RFC 9110

  • 206 Partial Content

    服务器只返回客户端请求的字节范围。视频流播放、下载续传或客户端发送 Range 标头时会遇到此状态码。

    定义于 RFC 9110

  • 207 Multi-Status

    WebDAV 响应,XML 正文中包含多个资源各自的状态码。

    定义于 RFC 4918

  • 208 Already Reported

    在 WebDAV 207 响应中使用,以避免重复列出同一绑定资源的成员。

    定义于 RFC 5842

  • 226 IM Used

    服务器对当前资源应用了实例操作(例如差异编码)。这种状态码极少出现。

    定义于 RFC 3229

  • 300 Multiple Choices

    该资源有多个表示形式,客户端应选择其中一种。实际使用中很少见。

    定义于 RFC 9110

  • 301 Moved Permanently

    该资源已永久迁移到 Location 标头指定的 URL。浏览器和搜索引擎会更新链接;部分客户端在跟随此重定向时会将 POST 改为 GET。

    定义于 RFC 9110

  • 302 Found

    该资源暂时位于 Location 标头指定的另一个 URL。常用于登录后跳转和短期重定向;浏览器通常会使用 GET 跟随此重定向。

    定义于 RFC 9110

  • 303 See Other

    客户端应使用 GET 从另一个 URL 获取结果。常用于表单 POST 后跳转到确认页面(Post/Redirect/Get 模式)。

    定义于 RFC 9110

  • 304 Not Modified

    缓存副本仍然有效,因此服务器不发送正文。浏览器使用 If-None-Match 或 If-Modified-Since 重新验证缓存文件时会遇到此状态码。

    定义于 RFC 9110

  • 305 Use Proxy

    已废弃或未使用

    要求客户端使用 Location 标头指定的代理。出于安全原因,此状态码已弃用,浏览器会忽略它。

    定义于 RFC 9110

  • 306 (Unused)

    已废弃或未使用

    已保留。该状态码曾用于 HTTP/1.1 的早期草案,现已不再使用。

    定义于 RFC 9110

  • 307 Temporary Redirect

    资源临时位于另一个 URL,客户端必须使用相同的方法和请求正文重新发送请求。浏览器也会在内部将 HTTP 重定向到 HTTPS 时使用此状态码。

    定义于 RFC 9110

  • 308 Permanent Redirect

    资源已永久移动,客户端必须在新的 URL 使用相同的方法和请求正文。它是 307 的永久版本,可安全用于重定向 POST 请求。

    定义于 RFC 9110

  • 400 Bad Request

    服务器无法处理该请求,因为请求格式有误,例如 JSON 无效、查询参数错误或 Cookie 已损坏。

    定义于 RFC 9110

  • 401 Unauthorized

    请求缺少有效的身份验证凭据。尽管名称如此,它的含义是“未通过身份验证”;服务器会发送 WWW-Authenticate 标头,说明登录方式。

    定义于 RFC 9110

  • 402 Payment Required

    在 HTTP 规范中为将来使用而保留。某些 API 和支付服务会在需要付款或订阅时使用此状态码。

    定义于 RFC 9110

  • 403 Forbidden

    服务器理解该请求,但拒绝处理;重新登录也无济于事。权限不足、目录列表已禁用或防火墙阻止客户端时,都可能出现此状态码。

    定义于 RFC 9110

  • 404 Not Found

    服务器找不到所请求的资源。通常是链接拼写错误或已过期、页面已删除,或 API 路由错误。

    定义于 RFC 9110

  • 405 Method Not Allowed

    资源存在,但不支持所用的 HTTP 方法,例如向只读 URL 发送 POST 请求。响应会在 Allow 标头中列出允许使用的方法。

    定义于 RFC 9110

  • 406 Not Acceptable

    服务器无法生成符合客户端 Accept 标头中任一格式的响应。

    定义于 RFC 9110

  • 407 Proxy Authentication Required

    与 401 类似,但客户端必须先通过代理服务器的身份验证。使用需要身份验证的代理服务器时,企业网络中可能会出现此状态码。

    定义于 RFC 9110

  • 408 Request Timeout

    服务器等待客户端完成发送请求时超时。网络连接缓慢或中断时可能会出现此状态码。

    定义于 RFC 9110

  • 409 Conflict

    请求与资源的当前状态冲突,例如编辑冲突,或尝试创建已存在的内容。

    定义于 RFC 9110

  • 410 Gone

    资源已被永久移除,且不会恢复。与 404 不同,此状态码会告知搜索引擎更快地从索引中移除该 URL。

    定义于 RFC 9110

  • 411 Length Required

    服务器要求提供 Content-Length 标头,但请求中未包含该标头。

    定义于 RFC 9110

  • 412 Precondition Failed

    请求标头中的某项条件(例如 If-Match)未满足。此状态码用于防止覆盖客户端上次读取后已发生变化的资源。

    定义于 RFC 9110

  • 413 Content Too Large

    请求正文超出服务器可接受的大小。上传文件超过限制时可能会出现此状态码,例如超过 nginx 的 client_max_body_size 限制。

    定义于 RFC 9110

  • 414 URI Too Long

    URL 超出服务器可处理的长度。通常是表单通过 GET 发送了过多数据,或重定向循环不断追加参数所致。

    定义于 RFC 9110

  • 415 Unsupported Media Type

    服务器不支持请求正文的格式,例如向要求 application/json 的端点发送 XML。

    定义于 RFC 9110

  • 416 Range Not Satisfiable

    Range 标头中请求的字节范围超出了资源大小。

    定义于 RFC 9110

  • 417 Expectation Failed

    服务器无法满足客户端 Expect 标头中的要求。

    定义于 RFC 9110

  • 418 I'm a teapot

    源自 1998 年愚人节玩笑《超文本咖啡壶控制协议》:茶壶拒绝冲泡咖啡。HTTP 将此状态码保留为未使用状态,但一些服务器会将它作为彩蛋返回,或用来拒绝不受欢迎的机器人。

    定义于 RFC 2324 / RFC 9110 (Unused)

  • 419 Page Expired

    非标准

    非标准状态码。Laravel 会在表单的 CSRF 令牌缺失或过期时返回此状态码,通常是因为会话超时。

    定义于 Laravel

  • 420 Enhance Your Calm

    非标准

    非标准状态码。旧版 Twitter API 曾用它表示速率限制;此类情况的标准状态码是 429。

    定义于 Twitter API v1

  • 421 Misdirected Request

    请求到达的服务器无法为该主机生成响应,例如 HTTP/2 连接被复用于另一个域名时。

    定义于 RFC 9110

  • 422 Unprocessable Content

    请求格式正确,但内容无效,例如表单未通过验证规则。API 广泛使用此状态码表示验证错误。

    定义于 RFC 9110

  • 423 Locked

    WebDAV 资源已锁定,无法修改。

    定义于 RFC 4918

  • 424 Failed Dependency

    WebDAV 请求失败,因为其依赖的另一项操作失败。

    定义于 RFC 4918

  • 425 Too Early

    服务器不会处理可能被重放的请求,例如通过 TLS 1.3 早期数据发送的请求。

    定义于 RFC 8470

  • 426 Upgrade Required

    服务器拒绝使用当前协议处理请求,并在 Upgrade 标头中指出所需协议。

    定义于 RFC 9110

  • 428 Precondition Required

    服务器要求使用条件请求(例如包含 If-Match),以防止更新丢失。

    定义于 RFC 6585

  • 429 Too Many Requests

    客户端在指定时间内发送了过多请求。API 会用此状态码表示速率限制,通常还会包含 Retry-After 标头,说明何时可以重试。

    定义于 RFC 6585

  • 431 Request Header Fields Too Large

    请求标头过大,通常是因为 Cookie 数量过多或体积过大。清除该网站的 Cookie 通常可以解决问题。

    定义于 RFC 6585

  • 444 No Response

    非标准

    非标准状态码。nginx 在内部使用此状态码关闭连接而不发送响应,通常用于丢弃不需要的流量;客户端实际上不会收到此状态码。

    定义于 nginx

  • 451 Unavailable For Legal Reasons

    由于法律原因(例如法院命令或政府审查),资源无法访问。该数字指向小说《华氏 451 度》。

    定义于 RFC 7725

  • 494 Request Header Too Large

    非标准

    非标准状态码。nginx 自有的 431 变体,用于记录请求标头超出其缓冲区限制的情况。

    定义于 nginx

  • 495 SSL Certificate Error

    非标准

    非标准状态码。客户端证书验证失败时,nginx 会返回此状态码。

    定义于 nginx

  • 496 SSL Certificate Required

    非标准

    非标准状态码。未提供必需的客户端证书时,nginx 会返回此状态码。

    定义于 nginx

  • 497 HTTP Request Sent to HTTPS Port

    非标准

    非标准状态码。向配置为 HTTPS 的端口发送普通 HTTP 请求时,nginx 会返回此状态码。

    定义于 nginx

  • 499 Client Closed Request

    非标准

    非标准状态码。客户端在服务器响应前关闭连接时,nginx 会记录此状态码,例如用户取消加载缓慢的页面,或客户端超时。

    定义于 nginx

  • 500 Internal Server Error

    服务器遇到意外错误,无法完成请求。此通用错误可能由程序缺陷、崩溃或配置错误导致;具体信息可在服务器日志中查看。

    定义于 RFC 9110

  • 501 Not Implemented

    服务器不支持所需功能,例如不识别该 HTTP 方法。

    定义于 RFC 9110

  • 502 Bad Gateway

    网关或代理服务器从上游服务器收到了无效响应。nginx 或负载均衡器后的应用程序崩溃或正在重启时,常会出现此状态码。

    定义于 RFC 9110

  • 503 Service Unavailable

    服务器因过载或正在维护,暂时无法处理请求。Retry-After 标头可能会说明何时可以重试。

    定义于 RFC 9110

  • 504 Gateway Timeout

    网关或代理未能及时收到上游服务器的响应。常见原因是后端请求耗时过长,例如数据库查询时间过长。

    定义于 RFC 9110

  • 505 HTTP Version Not Supported

    服务器不支持请求中使用的 HTTP 版本。

    定义于 RFC 9110

  • 506 Variant Also Negotiates

    服务器的内容协商配置出错:选定的变体本身也被配置为进行内容协商。

    定义于 RFC 2295

  • 507 Insufficient Storage

    服务器无法存储完成请求所需的内容,例如 WebDAV 服务器磁盘已满。

    定义于 RFC 4918

  • 508 Loop Detected

    服务器发现无限循环,因此停止了 WebDAV 操作。

    定义于 RFC 5842

  • 509 Bandwidth Limit Exceeded

    非标准

    非标准状态码。某些共享主机环境(如 Apache 模块、cPanel)会在网站超出带宽限额时使用此状态码。

    定义于 Apache / cPanel

  • 510 Not Extended

    已废弃或未使用

    需要进一步扩展才能完成请求。此状态码由一项现已废弃的实验性规范定义。

    定义于 RFC 2774

  • 511 Network Authentication Required

    客户端必须通过身份验证才能访问网络。酒店、机场或咖啡馆的 Wi-Fi 通常会在登录前通过强制门户发送此状态码。

    定义于 RFC 6585

  • 520 Web Server Returned an Unknown Error

    非标准

    非标准状态码。源服务器返回空响应、未知响应或意外响应时,Cloudflare 会返回此状态码。

    定义于 Cloudflare

  • 521 Web Server Is Down

    非标准

    非标准状态码。源服务器拒绝连接时,Cloudflare 会返回此状态码。通常是因为 Web 服务器已停止运行,或阻止了 Cloudflare 的 IP 地址。

    定义于 Cloudflare

  • 522 Connection Timed Out

    非标准

    非标准状态码。与源服务器建立 TCP 连接超时时,Cloudflare 会返回此状态码。

    定义于 Cloudflare

  • 523 Origin Is Unreachable

    非标准

    非标准状态码。无法连接到源服务器时,Cloudflare 会返回此状态码,例如发生 DNS 或路由问题时。

    定义于 Cloudflare

  • 524 A Timeout Occurred

    非标准

    非标准状态码。Cloudflare 已连接到源服务器,但未能在超时时间内(默认 100 秒)收到 HTTP 响应时,会返回此状态码。

    定义于 Cloudflare

  • 525 SSL Handshake Failed

    非标准

    非标准状态码。与源服务器进行 SSL/TLS 握手失败时,Cloudflare 会返回此状态码。

    定义于 Cloudflare

  • 526 Invalid SSL Certificate

    非标准

    非标准状态码。源服务器的 SSL 证书无效且已启用 Full (strict) SSL 模式时,Cloudflare 会返回此状态码。

    定义于 Cloudflare

使用方法

  1. 输入状态码(例如 404,或只输入 5 以查找所有服务器错误),也可以输入“重定向”或“超时”等关键词。
  2. 使用分类筛选缩小列表范围:信息性响应、成功、重定向、客户端错误或服务器错误。
  3. 点击任意状态码旁的“复制链接”,即可分享指向该状态码的直达链接,例如在错误报告中使用。

工作原理

每个 HTTP 响应都以一个三位状态码开头。首位数字表示类别:1xx 表示信息响应,2xx 表示成功,3xx 表示重定向,4xx 表示由请求导致的错误,5xx 表示服务器端错误。客户端如果无法识别某个具体状态码,会按该类别的 x00 状态码处理;因此,未知的 4xx 状态码会按 400 处理。

核心状态码定义于 RFC 9110(HTTP 语义,2022),该规范取代了较早的 RFC 7231。其他状态码来自扩展规范:WebDAV(RFC 4918)、定义 428、429、431 和 511 的 RFC 6585、定义 451 的 RFC 7725,以及定义 425 的 RFC 8470。RFC 9110 还重命名了两个状态码:413 现在称为“内容过大”,422 现在称为“内容无法处理”;你可能仍会看到它们的旧名称“负载过大”和“无法处理的实体”。

日志中常见的一些状态码并非标准状态码。nginx 在内部使用 444 和 494–499(499 表示客户端放弃等待),而 Cloudflare 在无法从源服务器获得正常响应时会返回 520–526。这些状态码在列表中标记为“非标准”。原因短语(例如“Not Found”)按照规范中的英文原文显示;HTTP/2 和 HTTP/3 只会发送数字。

示例

迁移网站时用 301 还是 308

两者都是永久重定向。普通页面迁移使用 301;如果要求客户端向新的 URL 重复发送 POST 或 PUT 请求,则使用 308,因为某些客户端遇到 301 后会将 POST 改为 GET。

401 与 403 的区别

如果未发送令牌或发送的令牌已过期,API 会返回 401,客户端应提示用户登录。如果令牌有效但用户没有权限,则会返回 403,此时重新登录也无济于事。

排查 nginx 后端的 502 错误

nginx 返回 502 Bad Gateway,表示其背后的应用未能正常响应。请检查应用进程是否正在运行,以及日志中的记录;504 则表示应用响应过慢。

常见问题

404 和 410 有什么区别?

404 表示服务器找不到该资源,并不说明它以后会怎样。410 表示该资源已被主动删除且不会恢复,这有助于搜索引擎更快地从索引中移除该 URL。

验证错误应该返回 400 还是 422?

两种状态码都适用。对于服务器无法解析的请求(例如格式错误的 JSON),适合返回 400;对于可以正确解析、但包含无效值的请求(例如 email 字段中没有 @),适合返回 422。

418“我是茶壶”是真正的状态码吗?

它源自 1998 年愚人节发布的一份 RFC。RFC 9110 将 418 保留为未使用状态码,以免它被分配给其他用途。少数服务器会把它用作玩笑,但它没有标准含义。

499 是怎么来的?

499 是 nginx 专用状态码。如果客户端在服务器发送响应前关闭连接,它就会出现在 nginx 日志中。客户端不会收到 499;它通常表示响应较慢或客户端超时。

搜索引擎会把 302 和 301 同等对待吗?

302 表示临时迁移,因此搜索引擎通常会先继续索引原始 URL。如果 302 长期存在,Google 可能会将其视为永久重定向。永久迁移请使用 301 或 308。

隐私

列表是页面的一部分。搜索和筛选都在浏览器中进行;搜索词不会发送到任何地方,也不会被纳入分析统计。