HTTP 状态码速查
可搜索的 HTTP 状态码列表,涵盖 IANA 注册表中的所有状态码(100–511),含原因短语、定义它的 RFC,以及何时使用的通俗解释。
- 100ContinueRFC 9110
服务器已收到请求头,客户端可以继续发送请求体(对 Expect: 100-continue 的回应)。
- 101Switching ProtocolsRFC 9110
服务器同意按 Upgrade 头的要求切换协议,例如切换到 WebSocket。
- 102ProcessingRFC 2518
WebDAV:服务器仍在处理耗时请求,暂时没有响应。
- 103Early HintsRFC 8297
在最终响应之前发送,让浏览器提前预加载 Link 头中列出的资源。
- 104Upload Resumption Supporteddraft-ietf-httpbis-resumable-upload临时注册
可恢复上传草案:服务器支持续传被中断的上传。
- 200OKRFC 9110
请求成功。响应体包含所请求的资源或操作结果。
- 201CreatedRFC 9110
已创建新资源,其 URL 通常在 Location 头中给出。
- 202AcceptedRFC 9110
请求已被接受,但处理尚未完成(异步任务)。
- 203Non-Authoritative InformationRFC 9110
成功,但返回内容已被转换型代理修改。
- 204No ContentRFC 9110
成功且没有响应体,常见于 DELETE 或保存数据。
- 205Reset ContentRFC 9110
成功;客户端应重置发送请求的表单或视图。
- 206Partial ContentRFC 9110
按 Range 头的要求只返回资源的一部分(断点续传、视频拖动)。
- 207Multi-StatusRFC 4918
WebDAV:响应体中包含多个资源各自的状态码。
- 208Already ReportedRFC 5842
WebDAV:绑定的成员已在本响应前面列出过。
- 226IM UsedRFC 3229
Delta 编码:响应是对资源应用实例操作后的结果。
- 300Multiple ChoicesRFC 9110
有多种表示形式可用,客户端可以自行选择。
- 301Moved PermanentlyRFC 9110
资源已永久移动到 Location 中的 URL,搜索引擎会转移排名。客户端可能把 POST 改为 GET。
- 302FoundRFC 9110
资源暂时位于其他 URL,今后仍应使用原 URL。客户端可能把 POST 改为 GET。
- 303See OtherRFC 9110
请用 GET 访问另一个 URL,常见于表单 POST 之后(Post/Redirect/Get 模式)。
- 304Not ModifiedRFC 9110
缓存副本仍然有效(带 If-None-Match / If-Modified-Since 的条件请求),不发送响应体。
- 305Use ProxyRFC 9110已弃用
已弃用:资源必须通过代理访问。出于安全原因不再使用。
- 306(Unused)RFC 9110保留,未使用
保留;曾在早期草案中使用,现已不再使用。
- 307Temporary RedirectRFC 9110
临时重定向,保持原请求方法和请求体(POST 仍为 POST)。
- 308Permanent RedirectRFC 9110
永久重定向,保持原请求方法和请求体(POST 仍为 POST)。
- 400Bad RequestRFC 9110
请求格式有误,服务器无法处理(语法错误、参数无效、JSON 无效等)。
- 401UnauthorizedRFC 9110
需要身份验证或验证失败;响应中包含 WWW-Authenticate 头。
- 402Payment RequiredRFC 9110
保留供将来使用;部分 API 用它表示付费或配额问题。
- 403ForbiddenRFC 9110
服务器理解请求但拒绝执行,重新登录也无济于事。
- 404Not FoundRFC 9110
该 URL 下不存在资源(或服务器不愿透露其存在)。
- 405Method Not AllowedRFC 9110
该资源不支持此 HTTP 方法;Allow 头列出了可用方法。
- 406Not AcceptableRFC 9110
没有与客户端 Accept 头匹配的表示形式。
- 407Proxy Authentication RequiredRFC 9110
与 401 类似,但需要先通过代理的身份验证。
- 408Request TimeoutRFC 9110
客户端发送请求耗时过长,服务器关闭了连接。
- 409ConflictRFC 9110
请求与资源当前状态冲突(例如编辑冲突、重复数据)。
- 410GoneRFC 9110
资源已被永久删除且不会恢复,比 404 更明确。
- 411Length RequiredRFC 9110
服务器要求提供 Content-Length 头。
- 412Precondition FailedRFC 9110
If-Match 或 If-Unmodified-Since 等前置条件不满足(乐观锁)。
- 413Content Too LargeRFC 9110
请求体超过服务器允许的大小(上传大小限制) 。
- 414URI Too LongRFC 9110
URL 超出服务器可处理的长度。
- 415Unsupported Media TypeRFC 9110
不支持请求体的媒体类型(Content-Type)。
- 416Range Not SatisfiableRFC 9110
无法满足所请求的 Range,例如起点超出了文件末尾。
- 417Expectation FailedRFC 9110
无法满足 Expect 头中的期望。
- 418(Unused)RFC 9110保留,未使用
保留未用;因愚人节 RFC 2324 中的“I’m a teapot”而广为人知。
- 421Misdirected RequestRFC 9110
请求发送到了无法为该主机提供响应的服务器(例如复用的 HTTP/2 连接)。
- 422Unprocessable ContentRFC 9110
语法正确,但内容在语义上无效(校验错误)。
- 423LockedRFC 4918
WebDAV:资源已被锁定。
- 424Failed DependencyRFC 4918
WebDAV:所依赖的操作失败,导致本请求失败。
- 425Too EarlyRFC 8470
服务器拒绝处理可能被重放的请求(TLS 1.3 早期数据)。
- 426Upgrade RequiredRFC 9110
客户端必须切换到 Upgrade 头中列出的其他协议。
- 428Precondition RequiredRFC 6585
服务器要求使用条件请求(If-Match),以防止更新丢失。
- 429Too Many RequestsRFC 6585
一定时间内请求过多(限流);Retry-After 指明何时可以重试。
- 431Request Header Fields Too LargeRFC 6585
请求头(或某个请求头,如 Cookie)过大。
- 451Unavailable For Legal ReasonsRFC 7725
因法律原因(如法院命令或审查)无法提供该资源。
- 500Internal Server ErrorRFC 9110
服务器发生了意外的通用错误。
- 501Not ImplementedRFC 9110
服务器不支持完成请求所需的功能(例如未知的请求方法)。
- 502Bad GatewayRFC 9110
网关或代理从上游服务器收到了无效响应。
- 503Service UnavailableRFC 9110
服务器暂时过载或正在维护,可能会返回 Retry-After。
- 504Gateway TimeoutRFC 9110
网关或代理未能及时从上游服务器获得响应。
- 505HTTP Version Not SupportedRFC 9110
不支持请求所使用的 HTTP 版本。
- 506Variant Also NegotiatesRFC 2295
内容协商配置错误:所选变体本身又在进行协商。
- 507Insufficient StorageRFC 4918
WebDAV:服务器存储空间不足,无法完成请求。
- 508Loop DetectedRFC 5842
WebDAV:服务器在处理请求时检测到无限循环。
- 510Not Extended (OBSOLETED)RFC 2774已弃用
已废弃:请求还需要进一步的扩展(HTTP 扩展框架)。
- 511Network Authentication RequiredRFC 6585
客户端需要先认证才能访问网络,例如 Wi-Fi 认证门户。
什么是 HTTP 状态码?
这是一份完整且可搜索的参考,收录了在 IANA 注册的全部 64 个 HTTP 状态码,从 100 Continue 到 511 Network Authentication Required。每个条目都显示官方的原因短语、定义它的 RFC,以及它的含义和服务器何时发送它的简要说明;已弃用和未使用的状态码会被标出。
如何使用 HTTP 状态码
- 在搜索框中输入状态码(
404)、状态码的一部分(30)或关键词(redirect、timeout)。 - 按类别筛选:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误。
- 查看每个状态码的原因短语、RFC 和说明。
示例
418
418 (Unused) · RFC 9110 · reserved and unused; known from the "I’m a teapot" April Fools’ RFC 2324.
何时使用 HTTP 状态码
适合在调试 API、阅读服务器日志,或为自己的接口选择返回哪个状态码时使用。特定产品使用的非官方状态码(Nginx 499、Cloudflare 520–527、IIS 440)不在注册表中,因此没有列出。
HTTP 状态码 的工作原理
该列表对应 IANA HTTP 状态码注册表,自 2022 年起大部分由 RFC 9110(HTTP 语义)定义,另有 WebDAV(RFC 4918)和 RFC 6585 等扩展。搜索会匹配状态码前缀、英文原因短语以及当前语言的说明,全部在本地完成。
常见用例
- 为 API 错误在 401 与 403、400 与 422 之间做选择。
- 查询日志中出现的 425 Too Early 或 421 Misdirected Request。
- 向客户解释为什么对已删除的页面,410 Gone 比 404 更合适。
- 当重定向必须保留 POST 方法时,选择 307 还是 308。
常见问题
401 和 403 有什么区别?
401 表示未通过身份验证(或凭据无效),并附带 WWW-Authenticate。403 表示服务器知道你是谁,但你没有权限。
418 I'm a teapot 是真正的状态码吗?
它在注册表中是保留的,并被 RFC 9110 列为未使用,因为很多库根据 1998 年的愚人节 RFC 实现了它。
为什么 422 现在叫 Unprocessable Content?
RFC 9110 把它从 WebDAV 移到了核心 HTTP,并把名称从 Unprocessable Entity 改了过来。