| 状态码 | 名称 | 说明 |
|---|---|---|
| 100 | Continue | 临时响应。客户端应当继续发送请求的剩余部分;如果请求已经完成,则忽略此响应。服务器必须在请求完成后向客户端发送最终响应。 |
| 101 | Switching Protocols | 服务器已理解客户端的请求,并将通过 Upgrade 消息头切换到客户端指定的协议(例如从 HTTP/1.1 切换到 WebSocket)。 |
| 102 | Processing | WebDAV(RFC 2518)扩展状态码。表示服务器已收到并正在处理请求,但尚无可用响应,用于避免客户端超时。 |
| 103 | Early Hints | 配合 Link 头提前告知客户端可以预加载的资源(如 CSS、JS),以便在服务器准备最终响应的同时进行预连接或预取。 |
| 状态码 | 名称 | 说明 |
|---|---|---|
| 200 | OK | 请求成功。响应体中通常包含请求的资源。这是最常见的成功状态码。 |
| 201 | Created | 请求已成功并且创建了一个新资源。通常是 POST 或 PUT 之后的响应,新资源的 URI 在 Location 响应头中返回。 |
| 202 | Accepted | 请求已被接受但尚未处理完成。用于异步任务:服务器接受请求后立即响应,处理在后台进行。 |
| 203 | Non-Authoritative Information | 请求已成功处理,但返回的元信息不是来自原始服务器,而是来自本地或第三方副本。 |
| 204 | No Content | 服务器成功处理了请求,但没有返回任何内容。常见于 DELETE 或更新操作,响应头可能包含更新后的元信息。 |
| 205 | Reset Content | 服务器成功处理请求,客户端应当重置表单视图。常用于用户输入后重置表单以便进行下一次输入。 |
| 206 | Partial Content | 当客户端使用 Range 头只请求资源的一部分时返回。用于断点续传和分段下载,必须在响应中包含 Content-Range 头。 |
| 207 | Multi-Status | WebDAV(RFC 4918)扩展状态码。响应体是 XML,包含多个独立的子响应状态码,适用于涉及多个资源的请求。 |
| 208 | Already Reported | WebDAV(RFC 5842)扩展状态码。在 DAV:propstat 元素中使用,用于避免重复枚举同一集合的多个内部成员。 |
| 226 | IM Used | 服务器已完成对资源的 GET 请求,响应是对当前实例应用一个或多个实例操作的结果表示。 |
| 状态码 | 名称 | 说明 |
|---|---|---|
| 300 | Multiple Choices | 被请求的资源有多种可选响应,用户或用户代理应选择其中一个。 |
| 301 | Moved Permanently | 请求的资源已永久移动到新位置,新 URI 在 Location 头中返回。搜索引擎会更新链接。浏览器可能将 POST 改为 GET。 |
| 302 | Found | 请求的资源临时从不同 URI 响应。客户端应继续使用原 URI。许多浏览器会在后续请求中将 POST 改为 GET(与 303 行为接近)。 |
| 303 | See Other | 客户端应使用 GET 方法访问 Location 头中给出的 URI。常用于 POST 后的重定向以避免重复提交。 |
| 304 | Not Modified | 条件请求下资源未被修改,客户端可以继续使用缓存版本。响应不包含消息体,配合 If-Modified-Since 或 If-None-Match 使用。 |
| 305 | Use Proxy | 已废弃。因安全原因不再使用。原本用于指示必须通过指定代理访问资源。 |
| 306 | Unused | 保留状态码。HTTP/1.1 规范中不再使用,仅保留以防将来启用。 |
| 307 | Temporary Redirect | 临时重定向。与 302 类似,但严格要求客户端保留原请求方法(例如 POST 仍然是 POST),不允许更改为 GET。 |
| 308 | Permanent Redirect | 永久重定向。与 301 类似,但严格要求客户端保留原请求方法。 |
| 状态码 | 名称 | 说明 |
|---|---|---|
| 400 | Bad Request | 服务器无法理解请求,通常是语法错误、请求参数不合法或报文格式非法。客户端应修改请求后再提交。 |
| 401 | Unauthorized | 当前请求需要用户认证。响应必须包含 WWW-Authenticate 头,客户端可在 Authorization 头中提交凭证后重试。 |
| 402 | Payment Required | 保留状态码,为将来需要设计。最初为数字支付系统而设,目前没有标准约定的使用场景。 |
| 403 | Forbidden | 服务器已理解请求但拒绝执行。与 401 不同,身份验证无法解决此问题——服务器知道你是谁,但就是不让你访问。 |
| 404 | Not Found | 服务器找不到请求的资源。浏览器中意味着 URL 无法识别;API 中可能意味着端点有效但资源本身不存在。 |
| 405 | Method Not Allowed | 请求方法不被目标资源支持(例如对只读资源使用 DELETE)。响应必须包含 Allow 头指出被支持的方法。 |
| 406 | Not Acceptable | 服务器根据 Accept 系列请求头无法生成符合客户端要求的响应内容。 |
| 407 | Proxy Authentication Required | 与 401 类似,但认证需要由代理服务器完成。代理必须在 Proxy-Authenticate 头中给出认证方案。 |
| 408 | Request Timeout | 客户端没有在服务器预期的时间内完成请求发送。客户端可以直接重试相同请求。 |
| 409 | Conflict | 请求与服务器当前状态冲突,通常发生在 PUT 请求或版本控制场景,例如并发编辑造成的版本冲突。 |
| 410 | Gone | 请求的资源已被永久删除且没有转发地址。与 404 不同,410 明确表示"曾经存在但已移除",通常是永久状态。 |
| 411 | Length Required | 服务器拒绝未定义 Content-Length 的请求。客户端需在请求头中添加有效长度后重试。 |
| 412 | Precondition Failed | 请求头中指定的先决条件(如 If-Match、If-Unmodified-Since)在服务器上未被满足。 |
| 413 | Content Too Large | 请求体大小超过服务器愿意或能够处理的范围。曾名 Payload Too Large。服务器可在 Retry-After 头中指示何时重试。 |
| 414 | URI Too Long | 请求的 URI 长度超过服务器能处理的范围。常见于 GET 请求参数过长、或重定向死循环导致 URI 不断扩展。 |
| 415 | Unsupported Media Type | 请求中的媒体格式不被服务器支持(例如上传了服务器不识别的 Content-Type)。 |
| 416 | Range Not Satisfiable | Range 头中指定的范围无法满足(例如首字节位置超过了资源当前长度)。服务器应在 Content-Range 头中指示资源实际长度。 |
| 417 | Expectation Failed | Expect 请求头中的预期无法被服务器满足。 |
| 418 | I'm a teapot | 愚人节玩笑状态码(RFC 2324,超文本咖啡壶控制协议)。"服务器拒绝用茶壶煮咖啡",实际部署中偶被用作反爬或戏谑。 |
| 421 | Misdirected Request | 请求被定向到无法生成响应的服务器(例如 HTTP/2 连接复用时,请求的 scheme/authority 与服务器不匹配)。 |
| 422 | Unprocessable Content | 请求格式正确,但由于语义错误无法处理。常见于 REST API 参数校验失败(如字段类型正确但业务规则不通过)。源自 WebDAV(RFC 4918),现已纳入 RFC 9110。 |
| 423 | Locked | WebDAV(RFC 4918)扩展状态码。目标资源已被锁定。 |
| 424 | Failed Dependency | WebDAV(RFC 4918)扩展状态码。由于之前的某个请求失败,导致当前请求失败(例如 PROPPATCH 操作前置失败)。 |
| 425 | Too Early | 服务器不愿处理可能被重放的请求。用于 TLS 0-RTT 早期数据场景,以防重放攻击。 |
| 426 | Upgrade Required | 服务器拒绝当前协议执行请求,客户端必须升级到 Upgrade 头中指定的协议(如从 HTTP 升级到 TLS)。 |
| 428 | Precondition Required | 源服务器要求请求必须是条件请求。用于防止"丢失更新"——客户端读取、修改、写回时,中间有人抢先写入。 |
| 429 | Too Many Requests | 客户端在给定时间内发送了过多请求(限流/限速)。响应可在 Retry-After 头中告知何时重试。 |
| 431 | Request Header Fields Too Large | 请求头字段太大,服务器拒绝处理。可能是单个头字段过大,也可能是所有头字段总和过大。 |
| 451 | Unavailable For Legal Reasons | 因法律原因资源不可访问,如政府审查、法院命令要求下架等。编号 451 致敬《华氏 451 度》。 |
| 状态码 | 名称 | 说明 |
|---|---|---|
| 500 | Internal Server Error | 服务器遇到未预期的情况,无法完成请求。这是最通用的服务器错误——出现它通常意味着服务端代码抛出了未捕获的异常。 |
| 501 | Not Implemented | 服务器不支持当前请求所需的功能。例如服务器不识别请求方法,也无法为任何资源提供该方法。 |
| 502 | Bad Gateway | 作为网关或代理工作的服务器从上游服务器接收到无效响应。常见于 Nginx 后端应用崩溃或超时。 |
| 503 | Service Unavailable | 服务器暂时无法处理请求,通常是过载或维护。是临时状态,响应可在 Retry-After 头中告知何时重试。 |
| 504 | Gateway Timeout | 作为网关或代理工作的服务器未能在预期时间内从上游服务器收到响应。常见于反向代理后端响应缓慢或 DNS 查询超时。 |
| 505 | HTTP Version Not Supported | 服务器不支持请求中使用的 HTTP 版本。响应应说明为何不支持以及服务器支持哪些协议。 |
| 506 | Variant Also Negotiates | 透明内容协商出现内部配置错误:被请求的变体资源被配置为在协商中使用自己。 |
| 507 | Insufficient Storage | WebDAV(RFC 4918)扩展状态码。服务器无法存储完成请求所需的内容,通常是临时状态。 |
| 508 | Loop Detected | WebDAV(RFC 5842)扩展状态码。服务器在处理请求时检测到无限循环(例如符号链接互指)。 |
| 510 | Not Extended | 请求需要进一步扩展才能被服务器完成(RFC 2774)。客户端应按响应中的说明重新发送请求。已被弃用。 |
| 511 | Network Authentication Required | 客户端需要通过网络认证才能获得网络访问权限。常见于公共 Wi-Fi 的登录墙(captive portal)。 |
HTTP 状态码是服务器对客户端请求的标准化响应,分为五大类别: 1xx 信息 2xx 成功 3xx 重定向 4xx 客户端错误 5xx 服务器错误。
下表整理了常见状态码的名称、含义与典型使用场景,数据来源于 IANA 官方注册表 与 MDN Web Docs,遵循 RFC 9110 等现行规范。
401 Unauthorized(未认证)与 403 Forbidden(已认证但无权限);区分
404 Not Found(资源不存在)与 410 Gone(资源曾存在已永久删除)。301/308 是永久,302/307 是临时;307/308
严格保留原请求方法,301/302 浏览器可能改为 GET。422 Unprocessable Content,而不是笼统的 400 Bad
Request。429 Too Many Requests,并在 Retry-After 头中告知客户端何时可以重试。