ToolAct工具行动

HTTP 状态码查询

快速查询 HTTP 状态码含义,包含所有标准状态码说明

全部: 62 个状态码

1xx 信息(4)

100Continue

继续。客户端应继续发送请求的剩余部分。

101Switching Protocols

切换协议。服务器已理解客户端请求,并通过 Upgrade 消息头通知客户端切换协议。

102Processing

处理中。服务器已收到请求,正在处理,但尚未完成。

103Early Hints

早期提示。用于在最终响应之前返回一些头信息,帮助客户端预加载资源。

2xx 成功(10)

200OK

成功。请求已成功处理,响应中包含请求的数据。

201Created

已创建。请求成功并创建了新的资源。通常用于 POST 请求。

202Accepted

已接受。请求已接受处理,但处理尚未完成。常用于异步处理。

203Non-Authoritative Information

非授权信息。服务器成功处理请求,但返回的信息可能来自第三方。

204No Content

无内容。请求成功,但响应中不包含消息体。常用于 DELETE 请求。

205Reset Content

重置内容。请求成功,客户端应重置文档视图。

206Partial Content

部分内容。服务器成功处理了部分 GET 请求,用于断点续传。

207Multi-Status

多状态。多个状态码的响应(WebDAV)。

208Already Reported

已报告。DAV 绑定成员已在之前的多状态响应中被列举(WebDAV)。

226IM Used

已使用 IM。服务器已完成 GET 请求,响应使用了实例操作。

3xx 重定向(8)

300Multiple Choices

多种选择。请求的资源有多个表示形式,客户端需选择。

301Moved Permanently

永久移动。请求的资源已永久移动到新位置,应使用新 URL。

302Found

临时移动。请求的资源现在临时从另一个 URL 响应。

303See Other

查看其他。应使用 GET 方法访问另一个 URL 获取资源。

304Not Modified

未修改。资源未被修改,客户端可使用缓存的版本。

305Use Proxy

使用代理(已废弃)。应通过指定代理访问资源。

307Temporary Redirect

临时重定向。请求应使用相同方法和消息体重定向到另一个 URL。

308Permanent Redirect

永久重定向。请求应使用相同方法永久重定向到另一个 URL。

4xx 客户端错误(29)

400Bad Request

错误请求。服务器无法理解请求的格式,客户端应修改请求后重试。

401Unauthorized

未授权。请求需要用户身份验证。

402Payment Required

需要付费。保留供将来使用,常用于付费内容。

403Forbidden

禁止访问。服务器理解请求,但拒绝执行。

404Not Found

未找到。请求的资源不存在,最常见的状态码。

405Method Not Allowed

方法不允许。请求方法不被支持,响应中会包含 Allow 头。

406Not Acceptable

不可接受。服务器无法根据客户端请求的内容类型返回响应。

407Proxy Authentication Required

需要代理身份验证。客户端必须先向代理服务器进行身份验证。

408Request Timeout

请求超时。服务器等待请求超时。

409Conflict

冲突。请求与服务器当前状态冲突,常用于 PUT 请求。

410Gone

已删除。请求的资源已永久删除,不会再恢复。

411Length Required

需要长度。请求必须包含 Content-Length 头。

412Precondition Failed

前置条件失败。请求头中指定的条件不满足。

413Payload Too Large

请求实体过大。请求体超过了服务器愿意处理的大小。

414URI Too Long

URI 过长。请求的 URL 过长,服务器无法处理。

415Unsupported Media Type

不支持的媒体类型。请求体的格式服务器不支持。

416Range Not Satisfiable

请求范围不满足。请求的范围无效。

417Expectation Failed

期望失败。服务器无法满足请求头 Expect 字段的期望。

418I'm a teapot

我是茶壶。RFC 2324 的彩蛋代码,表示服务器拒绝煮咖啡。

421Misdirected Request

误导的请求。请求发送到了无法生成响应的服务器。

422Unprocessable Entity

无法处理的实体。请求格式正确,但语义错误无法处理。

423Locked

已锁定。请求的资源已被锁定(WebDAV)。

424Failed Dependency

依赖失败。请求失败是因为之前的请求失败(WebDAV)。

425Too Early

太早。服务器不愿处理可能被重放的请求。

426Upgrade Required

需要升级。客户端应切换到 TLS 协议。

428Precondition Required

需要前置条件。请求需要有条件头(如 If-Match)。

429Too Many Requests

请求过多。用户发送请求过于频繁,应限制速率。

431Request Header Fields Too Large

请求头字段过大。请求头太大,服务器无法处理。

451Unavailable For Legal Reasons

因法律原因不可用。该资源因法律原因无法提供。

5xx 服务器错误(11)

500Internal Server Error

服务器内部错误。服务器遇到意外情况,无法完成请求。

501Not Implemented

未实现。服务器不支持请求所需的功能。

502Bad Gateway

错误网关。服务器作为网关或代理时,从上游收到无效响应。

503Service Unavailable

服务不可用。服务器暂时无法处理请求,可能因过载或维护。

504Gateway Timeout

网关超时。服务器作为网关或代理时,等待上游响应超时。

505HTTP Version Not Supported

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

506Variant Also Negotiates

变体也需协商。服务器配置有误,导致内容协商进入循环。

507Insufficient Storage

存储空间不足。服务器无法存储完成请求所需的资源(WebDAV)。

508Loop Detected

检测到循环。服务器在处理请求时检测到无限循环(WebDAV)。

510Not Extended

未扩展。需要进一步扩展请求才能处理。

511Network Authentication Required

需要网络认证。需要进行网络认证才能继续(如热点登录)。

什么是 HTTP 状态码?

HTTP 状态码工具用于解释服务器在收到浏览器、爬虫、应用或 API 客户端请求后返回的响应代码。2xx 通常表示成功,3xx 表示重定向,4xx 多为客户端请求问题,5xx 则指向服务器端故障,但具体代码之间差异很大。401 和 403 不是一回事,404 和 410 对资源状态的含义不同,301 与 302 对 SEO 和缓存也有不同影响。它适合开发调试、接口联调、网站排障和客服定位问题时快速查阅。

使用方法

快速参考

  1. 点击任意状态码卡片即可复制
  2. 使用搜索框快速查找特定状态码
  3. 点击分类标签按状态类型筛选
  4. 将鼠标悬停在状态码上查看详细说明

调试技巧

  • 先判断状态码所属系列:2xx 表示成功,3xx 表示重定向,4xx 表示客户端问题,5xx 表示服务端问题。
  • 调试 API 时应结合状态码、响应体、响应头、请求方法和服务器日志一起分析,单凭状态码往往无法解释完整问题。

使用场景

调试 API 时快速查找状态码按编号、名称或描述搜索,按信息、成功、重定向、客户端错误或服务器错误分类筛选,无需打开单独的参考文档即可理解响应含义。每张状态码卡片包含 IETF 分类和简短说明,通常足以在深入查阅前选择下一步调试方向。
将状态码复制到工单和客服回复中在编写 bug 报告、日志注释、客户解释、网关规则或监控标注时,点击状态卡片即可复制数字代码。附带简短说明一起复制,让工单保留 HTTP 上下文信息。
区分客户端和服务器端故障类型利用分组布局区分 4xx 请求问题和 5xx 后端问题,以及 3xx 重定向行为和 2xx 成功响应。这有助于在深入日志分析之前,先将事件分配给正确的责任人。
引用前对照 IETF RFC 定义打开对应状态码的详情卡片,确认 IETF RFC 的措辞是否与你的理解一致,尤其是 401 与 403、404 与 410、301 与 308 这类容易混淆的组合。较新的状态码如 425 Too Early、451 Unavailable For Legal Reasons、421 Misdirected Request 在 HTTP/2 和 HTTP/3 栈中的行为与传统 4xx 和 3xx 不同,也值得特别注意。RFC 9110 已废弃 305 Use Proxy 和 306,将 418 归为彩蛋类别,并重组了 1xx 分类,仅 100 Continue 和 101 Switching Protocols 是浏览器或代理必须实现的。
查看监控面板时使用分组列表在一个视图中扫描重定向、客户端错误和服务器错误分组,用于向队友解释指标飙升、设置告警阈值或决定哪些响应类别需要单独的运维手册。当出现 429 飙升时,应单独记录 Retry-After 头的值,而不是将所有 4xx 一视同仁,因为 Retry-After 是服务器与客户端之间的速率限制协议,也是区分正常限流响应和异常行为的唯一字段。

技术原理

HTTP 状态码是响应起始行上返回的 3 位整数,由 HTTP 语义规范定义。当前的规范性参考是 RFC 9110(HTTP 语义,2022 年 6 月),它取代了早期的 RFC 7231 系列,扩展部分见 RFC 9111(缓存)、RFC 9112(HTTP/1.1)、RFC 9113(HTTP/2)和 RFC 9114(HTTP/3)。第一位数字定义响应类别,即使遇到未识别的代码也能按类别预测处理方式:1xx 信息性(临时响应,最终响应随后到达)、2xx 成功、3xx 重定向(需要用户代理进一步操作)、4xx 客户端错误(请求格式有误或无法满足)、5xx 服务器错误。缓存和中间代理必须将未知代码视为通用类别代码 x00(例如未知 4xx 按 400 处理),这就是状态码家族即使对私有或扩展代码也有意义的原因。 重定向代码携带的方法保留语义在历史上与实际意图存在偏差。RFC 9110 §15.4 对此作了明确区分:301 Moved Permanently 和 302 Found 可能将 POST 改写为 GET(这是所有浏览器在 1990 年代末期达成的事实行为,后在 RFC 7231 中正式确认);307 Temporary Redirect 和 308 Permanent Redirect 要求用户代理重复相同的方法和请求体。SEO 工具通常在 301 和 308 上传递等效的 PageRank 权重,将 302/307 视为保留原始 URL 的信号。条件状态码 304 Not Modified 和 412 Precondition Failed 依赖请求中的 If-None-Match / If-Modified-Since / ETag / Last-Modified 头部,而 206 Partial Content 响应 Range 请求时返回 Content-Range 头部,多范围请求时返回 multipart/byteranges 消息体。 4xx 和 5xx 类别在头部中携带契约细节。401 Unauthorized 必须包含 WWW-Authenticate 质询头,列出接受的认证方案(Bearer、Basic、Digest、Negotiate);缺少该头部则响应在技术上是格式错误的。405 Method Not Allowed 必须包含 Allow 头部,列出支持的方法。429 Too Many Requests、503 Service Unavailable 以及带有 Retry-After 的 301/307/308 允许服务器发出延迟信号,可以是秒数(Retry-After: 120)或 HTTP 日期(Retry-After: Wed, 21 Oct 2025 07:28:00 GMT),见 RFC 9110 §10.2.3。RFC 9110 废弃了 305 Use Proxy 和 306(保留/未使用),保留 418 I'm a teapot 作为 RFC 2324 / RFC 7168 记录的彩蛋代码,并重组了 1xx 分类,仅 100 Continue 和 101 Switching Protocols 是 HTTP/1.1 层必须实现的;102 Processing 和 103 Early Hints(RFC 8297)是可选扩展,主要通过 CDN 边缘逻辑体现。

  • 规范性参考:RFC 9110(HTTP 语义,2022 年 6 月)取代 RFC 7230-7235;扩展见 RFC 9111(缓存)、9112(HTTP/1.1 线路格式)、9113(HTTP/2)、9114(HTTP/3)。
  • 未知代码降级为类别代码(x00):未知 4xx 按 400 缓存和渲染,未知 5xx 按 500 处理——这就是第一位数字作为契约的意义。
  • 方法保留:301/302 在历史上允许 POST → GET 改写(1990 年代浏览器分歧后正式确认);307/308 要求重放相同方法和请求体——永久 API 端点迁移应使用 308。
  • 401 Unauthorized 必须携带 WWW-Authenticate;405 Method Not Allowed 必须携带 Allow;缺少这些头部违反规范,会破坏行为良好的 HTTP 客户端。
  • Retry-After(RFC 9110 §10.2.3)用于 429/503/301/307/308:接受增量秒数(Retry-After: 120)或 HTTP 日期(Retry-After: Wed, 21 Oct 2025 07:28:00 GMT)——客户端应能解析两种形式。
  • 条件缓存:304 Not Modified 响应 If-None-Match / If-Modified-Since 匹配时不包含消息体;206 Partial Content 响应 Range 请求时返回 Content-Range 和部分内容或 multipart/byteranges 文档。
  • RFC 9110 废弃了 305 Use Proxy 和 306(保留),保留 RFC 2324 / RFC 7168 的彩蛋 418 I'm a teapot,并将 102 Processing / 103 Early Hints(RFC 8297)视为可选 1xx 扩展,许多代理会将其剥离。

示例

2xx 成功 - 200 OK 与 204 No Content

200 OK            GET /api/users -> 返回响应体
201 Created       POST /api/posts -> 新资源位于 Location 头
204 No Content    DELETE /api/posts/42 -> 成功,但响应体为空
206 Partial       视频流或断点续传时的 Range 请求

RFC: RFC 7231 第 6.3 节定义了 2xx 成功类状态码

3xx 重定向 - 301 / 302 / 304 区别

301 Moved Permanently  -> 对 SEO 友好,浏览器会长期缓存新 URL
302 Found              -> 临时重定向,目标地址不应被缓存
304 Not Modified       -> 缓存仍然有效(ETag/Last-Modified 命中)
307 Temporary Redirect -> 类似 302,但请求方法不能改变(POST 仍然是 POST)
308 Permanent Redirect -> 类似 301,但保留原请求方法

RFC: RFC 7231 第 6.4 节定义了 3xx 重定向状态码
RFC: RFC 7232 第 4.1 节定义了 304 Not Modified 语义

4xx 客户端错误 - 鉴权与权限

400 Bad Request    JSON 格式错误,或缺少必填字段
401 Unauthorized   未携带或令牌无效,调用方需要先认证
403 Forbidden      已认证但没有权限访问该资源
404 Not Found      资源不存在(出于安全考虑,也可故意返回 404)
409 Conflict       键冲突或乐观锁版本不匹配
429 Too Many Reqs  触发限流——参考 Retry-After 响应头

RFC: RFC 7231 第 6.5 节定义了 4xx 客户端错误码
RFC: RFC 6585 第 4 节定义了 429 Too Many Requests

5xx 服务端错误 - 排查上游故障

500 Internal Server Error  应用代码未捕获的异常——查日志
502 Bad Gateway            Nginx/上游收到了后端返回的无效响应
503 Service Unavailable    维护中、过载,或应用正在启动
504 Gateway Timeout        上游在代理超时时间内没有响应

RFC: RFC 7231 第 6.6 节定义了 5xx 服务端错误码
快速判断: 5xx = 我们的问题,4xx = 调用方的问题

真实 curl 会话中的多种状态码

$ curl -I https://example.com/old-page
HTTP/2 301
location: https://example.com/new-page

$ curl -I https://example.com/admin
HTTP/2 401
www-authenticate: Bearer realm="api"

$ curl -X POST https://example.com/api/posts -d '{}'
HTTP/2 422
content-type: application/json

说明: 422 Unprocessable Entity 是 WebDAV 扩展(RFC 4918),常用于参数校验失败

常见问题

1xx、2xx、3xx、4xx、5xx 各代表什么?

1xx 是信息性响应(实际很少见)。2xx 表示请求成功。3xx 是重定向,客户端应改请求其他 URL。4xx 是客户端问题(请求错误、缺鉴权、资源不存在)。5xx 是服务端问题(请求看上去没问题,但服务器没能完成)。看日志时,先看类别就能定位大方向。

301 和 302 有什么区别?

301 Moved Permanently 告诉客户端和搜索引擎资源已永久迁移——浏览器会大力缓存重定向,SEO 权重会传递到新 URL。302 Found 是临时重定向,客户端不应长期缓存。需要永久重定向并保留请求方法时使用 308,临时重定向并保留请求方法时使用 307。

401 和 403 应该怎么选?

401 Unauthorized 表示客户端没认证或凭据无效——响应应包含 WWW-Authenticate 头。403 Forbidden 表示服务器已经识别了你是谁,但拒绝提供该资源。401 通过登录可以解决,403 即便登录也无济于事。

已经不存在的资源应该返回 404 还是 410?

404 Not Found 的意思是“我找不到,它可能存在别处或之后会回来”。410 Gone 的意思是“资源原本在这里,是有意移除的,不要再来找了”。搜索引擎会比 404 更快地把 410 的 URL 移出索引,所以已下线、不希望被再次抓取的页面应使用 410。

调试 API 时应该怎么读状态码?

先看类别(4xx 或 5xx 决定该排查哪一边),再看具体的状态码,最后看响应体。响应体通常携带真正的错误信息和内部错误码,HTTP 状态只是分类。同时要看 Retry-After、WWW-Authenticate、Location 等响应头。

非 2xx 的状态码会影响 SEO 吗?

有的会,有的不会。长期返回 5xx 表示站点不稳定,搜索引擎最终会降低抓取频率。301/308 会传递权重;302/307 不会。410 能更快地把页面移出索引;404 会保留更久。返回 200 但内容是软 404(实际是“未找到”页面却返回 200)比真正的 404 更糟糕,会让索引被空页填满。

418、451 等冷门状态码是做什么的?

418 “I'm a teapot” 是 RFC 2324 里著名的愚人节状态码——线上服务永远不应返回它。451 Unavailable For Legal Reasons 表示资源因法律原因被屏蔽(取自 Bradbury 的《华氏 451》)。429 Too Many Requests 表示限流,应配合 Retry-After 头使用。计划维护时正确的状态码是 503 Service Unavailable。