HTTP 状态码速查
浏览器或接口返回了 404、502、301 这样的数字,是什么意思?在这里搜数字或中文就能查到含义和常见原因。码表只收 IANA 已登记的状态码。
使用限制
- 只列 IANA 已登记的状态码。注册表里“未分配”的编号(如 105-199、419-420、512-599)不会出现,有的网站或框架自定义的码(例如 Nginx 的 499)也不收录,因为它们不在注册表里。
- 306 和 418 是“未使用”的保留码:306 曾在旧规范里定义过,现已不用;418 来自 1998 年愚人节 RFC 2324 的玩笑,RFC 9110 把它保留起来,不是正式功能,但仍有网站拿它开玩笑。它们在表里照列,并说明了状态。
- 104 是临时注册(用于草案中的可恢复上传协议),IANA 注明到 2026-11-13 到期,到期后可能被移除;510 在注册表里已标为“已废弃”。
- 含义和场景只是简明的说明,精确的语义以 RFC 为准;一个状态码在不同服务器、框架里的具体用法可能不同。
- 注册表会更新,本页数据的核对日期是 2026-10-29。
1xx 信息响应 · 2xx 成功 · 3xx 重定向 · 4xx 客户端错误 · 5xx 服务器错误
1xx 信息响应
| 状态码 | 名称(中文 / IANA 英文) | 含义 | 常见场景 | 出处 |
|---|---|---|---|---|
| 100 | 继续 Continue | 服务器已收到请求头,客户端可以继续发送请求体。 | 客户端用 Expect: 100-continue 先探路,准备上传较大的请求体时。 | RFC 9110, Section 15.2.1 |
| 101 | 切换协议 Switching Protocols | 服务器同意按客户端要求切换到另一种协议。 | 浏览器发起 WebSocket 握手,从 HTTP 升级到 WebSocket。 | RFC 9110, Section 15.2.2 |
| 102 | 处理中 Processing | 服务器已收到请求但还在处理,暂时没有结果(WebDAV 扩展)。 | 耗时很长的 WebDAV 操作,告诉客户端不要超时。 | RFC 2518 |
| 103 | 提前提示 Early Hints | 在最终响应之前先发出一批响应头,让浏览器提前加载资源。 | 服务器还在生成页面时,先用 Link 头提示浏览器预加载样式和脚本。 | RFC 8297 |
| 104 | 支持断点上传(临时注册) Upload Resumption Supported (TEMPORARY - registered 2024-11-13, extension registered 2025-09-15, expires 2026-11-13) | 处于 IANA 的临时注册状态,用于草案中的可恢复上传协议,到期日是 2026-11-13,到期后可能被移除,请勿在正式产品中依赖。 | 仅用于实验性的可恢复上传草案。 | draft-ietf-httpbis-resumable-upload-05 |
2xx 成功
| 状态码 | 名称(中文 / IANA 英文) | 含义 | 常见场景 | 出处 |
|---|---|---|---|---|
| 200 | 成功 OK | 请求成功,响应里带有结果。 | 正常打开网页、调用接口读取数据。 | RFC 9110, Section 15.3.1 |
| 201 | 已创建 Created | 请求成功,并且创建了新资源。 | POST 新建一条记录后,通常在 Location 头里给出新资源的地址。 | RFC 9110, Section 15.3.2 |
| 202 | 已接受 Accepted | 请求已被接受,但还没处理完。 | 提交一个异步任务(如导出报表),稍后再查询结果。 | RFC 9110, Section 15.3.3 |
| 203 | 非权威信息 Non-Authoritative Information | 请求成功,但内容经过代理修改,不完全是源服务器的原始响应。 | 经过会改写内容的代理或缓存时。 | RFC 9110, Section 15.3.4 |
| 204 | 无内容 No Content | 请求成功,但没有内容可返回。 | 保存、删除成功后接口不需要返回数据;OPTIONS 预检请求的响应。 | RFC 9110, Section 15.3.5 |
| 205 | 重置内容 Reset Content | 请求成功,并要求客户端重置当前表单或视图。 | 表单提交后要求清空输入框,实际很少使用。 | RFC 9110, Section 15.3.6 |
| 206 | 部分内容 Partial Content | 服务器只返回了请求范围内的那一部分内容。 | 视频拖动进度条、下载工具断点续传(请求头带 Range)。 | RFC 9110, Section 15.3.7 |
| 207 | 多状态 Multi-Status | 一个响应里包含多个子操作各自的状态(WebDAV 扩展)。 | WebDAV 批量操作,不同文件的结果各不相同。 | RFC 4918 |
| 208 | 已报告 Already Reported | 前面的响应已经列出了这个绑定的成员,这里不再重复(WebDAV 扩展)。 | WebDAV 的绑定(binding)集合,避免重复枚举。 | RFC 5842 |
| 226 | 已使用实例操作 IM Used | 服务器对资源应用了一个或多个实例操作(增量更新),返回的是结果。 | 使用 Delta 编码的增量传输,现实中极少见。 | RFC 3229 |
3xx 重定向
| 状态码 | 名称(中文 / IANA 英文) | 含义 | 常见场景 | 出处 |
|---|---|---|---|---|
| 300 | 多种选择 Multiple Choices | 请求的资源有多个可选的表示,由客户端选择。 | 同一内容有多种语言或格式版本时,实际很少使用。 | RFC 9110, Section 15.4.1 |
| 301 | 永久移动 Moved Permanently | 资源已永久搬到新地址,以后请用新地址。 | 网站换域名、改网址结构,搜索引擎会把权重转移到新地址。 | RFC 9110, Section 15.4.2 |
| 302 | 临时跳转(Found) Found | 资源暂时在另一个地址,以后仍可能用原地址。 | 登录后跳回原页面、临时维护跳转;浏览器通常把 POST 改成 GET 再跳转。 | RFC 9110, Section 15.4.3 |
| 303 | 参见其他 See Other | 请求已处理,请用 GET 方法去另一个地址取结果。 | POST 提交表单后重定向到结果页,避免刷新时重复提交。 | RFC 9110, Section 15.4.4 |
| 304 | 未修改 Not Modified | 资源自上次请求后没有变化,可以直接使用本地缓存。 | 浏览器带 If-None-Match 或 If-Modified-Since 做条件请求时。 | RFC 9110, Section 15.4.5 |
| 305 | 使用代理 Use Proxy | 要求客户端通过指定代理访问(已弃用)。 | 历史遗留,浏览器基本不再支持,不要使用。 | RFC 9110, Section 15.4.6 |
| 306 | (未使用) (Unused) | 曾经在旧版规范里定义过,现在已不再使用,代码被保留,不能再分配。 | 已保留,不要使用。 | RFC 9110, Section 15.4.7 |
| 307 | 临时重定向 Temporary Redirect | 资源暂时在另一个地址,并且请求方法和请求体保持不变。 | 需要临时跳转又不能把 POST 变成 GET 时;HSTS 内部跳转也常见。 | RFC 9110, Section 15.4.8 |
| 308 | 永久重定向 Permanent Redirect | 资源已永久搬走,并且请求方法和请求体保持不变。 | 永久改址又要保持 POST 等方法时,是 301 的更严格版本。 | RFC 9110, Section 15.4.9 |
4xx 客户端错误
| 状态码 | 名称(中文 / IANA 英文) | 含义 | 常见场景 | 出处 |
|---|---|---|---|---|
| 400 | 错误请求 Bad Request | 服务器无法理解请求,通常是语法或参数有误。 | 请求体不是合法 JSON、缺少必填参数、请求头格式错误。 | RFC 9110, Section 15.5.1 |
| 401 | 未认证 Unauthorized | 需要先登录或提供有效凭据。 | 没带令牌、令牌过期、用户名密码错误。 | RFC 9110, Section 15.5.2 |
| 402 | 需要付款 Payment Required | 保留给将来的付费场景,目前没有统一用法。 | 少数支付类接口自定义使用。 | RFC 9110, Section 15.5.3 |
| 403 | 禁止访问 Forbidden | 服务器理解请求,但拒绝执行,通常是权限不足。 | 已登录但没有权限;目录禁止浏览;被防火墙或 IP 黑名单拦截。 | RFC 9110, Section 15.5.4 |
| 404 | 未找到 Not Found | 服务器找不到请求的资源。 | 网址输错、页面已删除或搬走;接口路径写错。 | RFC 9110, Section 15.5.5 |
| 405 | 方法不允许 Method Not Allowed | 该资源不支持这个请求方法。 | 对只允许 GET 的接口发了 POST;响应里会用 Allow 头列出支持的方法。 | RFC 9110, Section 15.5.6 |
| 406 | 无法接受 Not Acceptable | 服务器无法按请求头里要求的格式、语言等提供内容。 | Accept 头要求的格式服务器提供不了。 | RFC 9110, Section 15.5.7 |
| 407 | 需要代理认证 Proxy Authentication Required | 需要先通过代理服务器的身份验证。 | 公司网络的代理要求登录。 | RFC 9110, Section 15.5.8 |
| 408 | 请求超时 Request Timeout | 服务器等客户端发送完整请求等得太久,放弃等待。 | 网络很慢或客户端中途卡住,连接被服务器关闭。 | RFC 9110, Section 15.5.9 |
| 409 | 冲突 Conflict | 请求与资源当前状态冲突,无法完成。 | 两人同时修改同一条数据(版本冲突)、创建已存在的唯一资源。 | RFC 9110, Section 15.5.10 |
| 410 | 已消失 Gone | 资源曾经存在,现在永久删除了,而且没有新地址。 | 明确告诉搜索引擎页面已下线,比 404 更强烈。 | RFC 9110, Section 15.5.11 |
| 411 | 需要长度 Length Required | 服务器要求请求必须带 Content-Length 头。 | 上传时没有声明请求体长度。 | RFC 9110, Section 15.5.12 |
| 412 | 前提条件失败 Precondition Failed | 请求头里的前提条件(如 If-Match)没有满足。 | 用 If-Match 做乐观锁,数据已被别人改过。 | RFC 9110, Section 15.5.13 |
| 413 | 内容过大 Content Too Large | 请求体超过了服务器愿意处理的大小。 | 上传文件超过限制(如 Nginx 的 client_max_body_size)。 | RFC 9110, Section 15.5.14 |
| 414 | URI 过长 URI Too Long | 请求的网址太长,服务器不处理。 | 用 GET 把大量数据拼进查询字符串。 | RFC 9110, Section 15.5.15 |
| 415 | 不支持的媒体类型 Unsupported Media Type | 服务器不支持请求体的格式。 | 接口只收 application/json,却发来了表单格式。 | RFC 9110, Section 15.5.16 |
| 416 | 范围不可满足 Range Not Satisfiable | 请求的 Range 范围超出了资源实际大小。 | 断点续传时起始位置超过了文件长度。 | RFC 9110, Section 15.5.17 |
| 417 | 期望失败 Expectation Failed | 服务器无法满足 Expect 请求头的要求。 | 客户端发 Expect: 100-continue,服务器不支持。 | RFC 9110, Section 15.5.18 |
| 418 | (未使用) (Unused) | 来自 1998 年愚人节 RFC 2324 里的玩笑(“我是茶壶”)。RFC 9110 把 418 保留,不再分配给正式用途,但个别网站仍会拿它开玩笑。 | 已保留,不要使用。 | RFC 9110, Section 15.5.19 |
| 421 | 请求被误导 Misdirected Request | 请求被发到了无法给出响应的服务器。 | HTTP/2 连接复用时,域名对应的证书或服务器不匹配。 | RFC 9110, Section 15.5.20 |
| 422 | 无法处理的内容 Unprocessable Content | 请求格式正确,但内容在语义上无法处理。 | 接口参数校验失败:JSON 合法,但字段值不符合业务规则。 | RFC 9110, Section 15.5.21 |
| 423 | 已锁定 Locked | 要访问的资源被锁住了(WebDAV 扩展)。 | WebDAV 文件正被别人编辑。 | RFC 4918 |
| 424 | 依赖失败 Failed Dependency | 因为前一个请求失败,这个请求也无法完成(WebDAV 扩展)。 | WebDAV 批量操作中,前置操作失败导致后面的跟着失败。 | RFC 4918 |
| 425 | 过早 Too Early | 服务器不愿处理可能被重放的请求。 | TLS 1.3 的 0-RTT 早期数据可能被重放时。 | RFC 8470 |
| 426 | 需要升级 Upgrade Required | 客户端必须先升级到别的协议才能继续。 | 服务器要求改用 TLS 或更高版本的协议。 | RFC 9110, Section 15.5.22 |
| 428 | 需要前提条件 Precondition Required | 服务器要求请求必须带前提条件头。 | 要求带 If-Match,避免“丢失更新”。 | RFC 6585 |
| 429 | 请求过多 Too Many Requests | 客户端在单位时间内发送了太多请求,被限流。 | 调用接口过于频繁;响应里常带 Retry-After 告诉多久后重试。 | RFC 6585 |
| 431 | 请求头字段过大 Request Header Fields Too Large | 请求头太大,服务器拒绝处理。 | Cookie 积累得太多太大。 | RFC 6585 |
| 451 | 因法律原因不可用 Unavailable For Legal Reasons | 因为法律要求,资源被禁止访问。 | 依法屏蔽的内容;451 取自小说《华氏 451 度》。 | RFC 7725 |
5xx 服务器错误
| 状态码 | 名称(中文 / IANA 英文) | 含义 | 常见场景 | 出处 |
|---|---|---|---|---|
| 500 | 服务器内部错误 Internal Server Error | 服务器遇到意外情况,无法完成请求。 | 后端程序抛出未处理的异常、配置错误。 | RFC 9110, Section 15.6.1 |
| 501 | 未实现 Not Implemented | 服务器不支持完成请求所需要的功能。 | 收到了服务器完全不认识的请求方法。 | RFC 9110, Section 15.6.2 |
| 502 | 错误网关 Bad Gateway | 作为网关或代理的服务器,从上游服务器收到了无效响应。 | Nginx 后面的应用崩溃或返回了错误数据。 | RFC 9110, Section 15.6.3 |
| 503 | 服务不可用 Service Unavailable | 服务器暂时无法处理请求,通常是过载或维护。 | 服务维护、瞬时流量过大;响应可带 Retry-After。 | RFC 9110, Section 15.6.4 |
| 504 | 网关超时 Gateway Timeout | 作为网关或代理的服务器,等上游服务器响应超时。 | 后端处理太慢,代理等不及。 | RFC 9110, Section 15.6.5 |
| 505 | HTTP 版本不受支持 HTTP Version Not Supported | 服务器不支持请求使用的 HTTP 版本。 | 客户端使用了服务器不认识的 HTTP 协议版本。 | RFC 9110, Section 15.6.6 |
| 506 | 变体也在协商 Variant Also Negotiates | 服务器内部配置错误:内容协商配置出现循环引用。 | 极少见的服务器配置错误。 | RFC 2295 |
| 507 | 存储空间不足 Insufficient Storage | 服务器存储空间不够,无法保存请求内容(WebDAV 扩展)。 | WebDAV 上传时磁盘已满。 | RFC 4918 |
| 508 | 检测到环路 Loop Detected | 服务器处理请求时发现了无限循环(WebDAV 扩展)。 | WebDAV 绑定出现循环引用。 | RFC 5842 |
| 510 | 未扩展(已废弃) Not Extended (OBSOLETED) | 服务器要求请求里带有进一步的扩展声明(RFC 2774 已被标为历史)。 | 历史遗留,几乎见不到。 | RFC 2774 |
| 511 | 需要网络认证 Network Authentication Required | 客户端需要先通过网络认证才能上网。 | 连上公共 Wi-Fi 后,必须先在登录页面认证,拦截页面会返回它。 | RFC 6585 |
来源与核对日期:状态码的编号、英文名称与出处取自 IANA HTTP 状态码注册表(CSV 文件
http-status-codes-1.csv,注册表最后更新于 2025-09-15),核心码的定义见 RFC 9110《HTTP Semantics》第 15 节。我们于 2026-10-29 抓取并核对。中文名称、含义和常见场景为本站原创撰写。注册表之后若有变化,以 IANA 为准。使用方法
- 在搜索框里输入状态码(如
404)、中文(如找不到)或英文名称的一部分,表格实时过滤。 - 每个状态码都有固定的链接,例如
/http-status/#c404直接定位到 404 那一行,方便贴给同事。 - 状态码分五类:1xx 信息响应、2xx 成功、3xx 重定向、4xx 客户端错误(请求有问题)、5xx 服务器错误(服务器有问题)。
常见问题
401 和 403 有什么区别?
401 是“你是谁?请先登录”,缺少或没通过身份认证;403 是“我知道你是谁,但你无权访问”。登录后仍出现 403,说明账号权限不够。
301 和 302 有什么区别?
301 是永久搬家,搜索引擎会把权重转给新地址;302 是临时跳转,搜索引擎仍保留旧地址。需要保持请求方法不变时分别用 308 和 307。
502、503、504 都是服务器的问题,怎么分?
502:网关从上游收到了无效响应(后端崩了或返回了乱数据);503:服务暂时不可用(过载或维护);504:网关等上游等超时了。
为什么没有 499?
499 是 Nginx 自己用来表示“客户端提前关闭了连接”的非标准状态码,不在 IANA 注册表里,所以本页不列。