🌐 ZH

🔢 HTTP 状态码参考表

按分类整理了从 1xx(信息性响应)到 5xx(服务器错误)的全部标准 HTTP 状态码。每一项都提供官方原因短语(reason phrase)、一行说明和所依据的 RFC 条款,并支持按代码、短语或说明实时搜索。

指南

了解更多

01

1. HTTP 状态码的五大分类

HTTP 状态码按首位数字分为五类:1xx(信息性响应,表示请求仍在处理中)、2xx(成功,表示请求已被正常接收、理解并接受)、3xx(重定向,表示需要进一步操作才能完成请求)、4xx(客户端错误,表示请求本身存在问题)、5xx(服务器错误,表示服务器未能完成一个显然有效的请求)。这样的设计让客户端或代理即使不认识某个具体状态码,也能仅凭首位数字做出合理的兜底处理。

02

2. 容易混淆的状态码对

401 Unauthorized 实际上表示"未通过身份验证"(尽管名字容易误导,这其实是认证问题而非授权问题),而 403 Forbidden 则表示无论是否通过认证,服务器都因权限不足而拒绝请求。301/308(永久)与 302/307(临时)的区别对缓存和 SEO 都很重要,其中 307/308 在重定向时会保留原始的请求方法和正文,这一点与 302/301 不同。404 Not Found 与 410 Gone 也常被混淆——410 是更强烈的信号,明确表示资源此前存在但已被有意永久删除,提示客户端不要再重试。

03

3. RFC 9110 与状态码标准化

2022 年发布的 RFC 9110(HTTP Semantics)整合并规范了此前分散在 RFC 7231 等文档中的 HTTP 状态码定义,是目前最新的标准。本表优先引用 RFC 9110 的条款编号(§15.x),而由其他独立规范定义的状态码——例如 WebDAV(RFC 4918)或 RFC 6585 中的限流类状态码(429/431)——则引用对应的 RFC。准确使用状态码可以让 API 客户端、监控工具和缓存服务器的行为更加可预测。

常见问题

这张表里缺少某个标准状态码吗?
本表包含 IANA 官方注册表中的所有标准状态码。某些框架或 CDN 返回的非标准状态码可能不在此列。
搜索是如何工作的?
只要输入的文本出现在代码编号、英文原因短语或说明中的任意一处(不区分大小写),对应行就会显示。例如搜索"404"或"not found"都可以。
422 和 400 有什么区别?
400 表示请求本身语法有误;422 表示语法正确,但其中的指令(例如校验失败)在语义上无法被处理。
这些数据会被发送到别处吗?
不会。这是完全静态的参考数据,搜索也完全在浏览器 JavaScript 中进行,不会发送到任何服务器。