HTTP 状态码参考
HTTP
HTTP
网络
状态码
HTTP 状态码速查表,按 1xx ~ 5xx 分类整理全部标准状态码(含 WebDAV 扩展与常见非标准码)的含义、典型使用场景与排查建议。
HTTP 状态码参考
状态码是三位的整数,由响应行 HTTP/1.1 200 OK 中的第一个字段给出,用来告诉客户端这次请求处理的结果类别。第一位数字决定了所属的响应类别,后两位只用于区分同类中的具体语义。
| 类别 | 含义 | 常见例子 |
|---|---|---|
| 1xx | 信息性响应,请求已被接收,需继续处理 | 100、101、103 |
| 2xx | 成功,请求已被正常处理 | 200、201、204、206 |
| 3xx | 重定向,需要客户端进一步动作 | 301、302、304、307 |
| 4xx | 客户端错误,请求本身有问题 | 400、401、403、404、429 |
| 5xx | 服务端错误,服务端处理失败 | 500、502、503、504 |
一、1xx 信息性状态码
表示服务端已收到请求,正在处理中,通常不会作为最终响应单独返回,而是配合 Connection: keep-alive 或协议升级使用。
| 状态码 | 名称 | 说明 |
|---|---|---|
| 100 | Continue | 服务端已收到请求头,客户端可以继续发送请求体。常见于携带 Expect: 100-continue 的大文件上传 |
| 101 | Switching Protocols | 同意协议升级,客户端与服务端此后改用新协议通信,WebSocket 握手即返回 101 |
| 102 | Processing | WebDAV 中用于表示请求已收到但尚未处理完成,避免客户端超时 |
| 103 | Early Hints | 在最终响应前提前返回 Link 等头部,让浏览器可以预连接、预加载资源(常配合 103 Early Hints 优化首屏) |
二、2xx 成功
| 状态码 | 名称 | 说明 |
|---|---|---|
| 200 | OK | 请求成功并有响应体,是绝大多数 GET / POST 请求的正常返回值 |
| 201 | Created | 资源创建成功,响应通常带 Location 指向新资源地址(POST 创建、PUT 新建) |
| 202 | Accepted | 请求已接受但尚未处理完成,适合异步任务提交后立即返回 |
| 203 | Non-Authoritative Information | 响应来自缓存或代理,原始响应已被转换,内容并非源站原样返回 |
| 204 | No Content | 处理成功但没有响应体,常用于 DELETE、PUT,或前端不需要返回数据的提交 |
| 205 | Reset Content | 处理成功,要求客户端重置(清空)表单内容 |
| 206 | Partial Content | 返回部分内容,用于范围请求(Range),断点续传与视频拖动播放依赖它 |
| 207 | Multi-Status | WebDAV 中用于批量操作,响应体里为每个子操作分别给出结果 |
| 208 | Already Reported | WebDAV 中用于避免重复枚举已上报的成员 |
| 226 | IM Used | 服务端对资源执行了实例操控(Delta Encoding)后返回的结果 |
三、3xx 重定向
重点区分是否允许改变请求方法与是否可缓存,这是排查 301 与 302 混用问题的关键。
| 状态码 | 名称 | 说明 |
|---|---|---|
| 300 | Multiple Choices | 存在多个可选表示,由客户端选择,实际很少使用 |
| 301 | Moved Permanently | 资源永久迁移,搜索引擎会更新索引,浏览器会强缓存该跳转。接口 / 域名迁移常用 |
| 302 | Found | 资源临时迁移,语义上应保持原请求方法,但历史实现中常被改为 GET |
| 303 | See Other | 明确要求客户端用 GET 访问 Location 指向的资源,常用于 POST 后重定向到结果页 |
| 304 | Not Modified | 资源未变化,服务端不返回响应体,交由客户端使用本地缓存。需配合 If-None-Match / If-Modified-Since |
| 305 | Use Proxy | 要求通过指定代理访问,因安全原因已废弃 |
| 307 | Temporary Redirect | 临时跳转且禁止改变请求方法,POST 仍以 POST 重新发起 |
| 308 | Permanent Redirect | 永久跳转且禁止改变请求方法,相当于 301 的保方法版本 |
四、4xx 客户端错误
| 状态码 | 名称 | 说明 |
|---|---|---|
| 400 | Bad Request | 请求语法错误或参数无法解析,服务端拒绝处理 |
| 401 | Unauthorized | 未认证或凭证无效,响应应带 WWW-Authenticate 说明认证方式 |
| 402 | Payment Required | 保留状态码,部分商业 API 用它表示额度 / 付费问题 |
| 403 | Forbidden | 已认证但无权限访问,不要与 401 混淆:401 是「你是谁」,403 是「你不能」 |
| 404 | Not Found | 资源不存在,也可能是服务端为隐藏资源是否存在而故意返回 |
| 405 | Method Not Allowed | 资源存在但不支持该请求方法,响应应带 Allow 列出可用方法 |
| 406 | Not Acceptable | 无法产出符合 Accept 等协商头要求的响应 |
| 407 | Proxy Authentication Required | 需要先通过代理的身份认证 |
| 408 | Request Timeout | 服务端等待请求超时,主动关闭连接 |
| 409 | Conflict | 请求与资源当前状态冲突,如并发写入同一记录、版本号不匹配 |
| 410 | Gone | 资源曾存在且已永久删除,比 404 更明确,利于搜索引擎摘除索引 |
| 411 | Length Required | 缺少 Content-Length,服务端无法处理 |
| 412 | Precondition Failed | 请求头中的前置条件(If-Match、If-Unmodified-Since)不成立 |
| 413 | Content Too Large | 请求体超过服务端限制,如 Nginx client_max_body_size 过小 |
| 414 | URI Too Long | 请求的 URL 过长,常见于把大量参数塞进 GET 查询串 |
| 415 | Unsupported Media Type | 请求体的媒体类型不受支持,通常是 Content-Type 写错 |
| 416 | Range Not Satisfiable | Range 请求的范围无效或超出资源长度 |
| 417 | Expectation Failed | 无法满足 Expect 请求头中的期望 |
| 418 | I’m a teapot | 愚人节玩笑状态码,后被用作彩蛋,部分框架用它表示「拒绝为该请求煮咖啡」 |
| 421 | Misdirected Request | 请求被发送到无法响应该请求的连接上,常见于 HTTP/2 连接复用与 SNI 不一致 |
| 422 | Unprocessable Content | 语法正确但语义错误,常用于表单校验失败(原称 Unprocessable Entity) |
| 423 | Locked | WebDAV 中资源被锁定 |
| 424 | Failed Dependency | WebDAV 中因前一个操作失败导致当前操作未执行 |
| 425 | Too Early | 服务端不愿处理可能被重放的过早请求,用于防重放攻击(TLS 早期数据) |
| 426 | Upgrade Required | 要求客户端升级协议,如强制 HTTPS 或要求 HTTP/2 |
| 428 | Precondition Required | 要求请求必须携带前置条件,避免并发更新互相覆盖 |
| 429 | Too Many Requests | 触发限流,响应常带 Retry-After 告知多久后可重试 |
| 431 | Request Header Fields Too Large | 请求头过大,多因 Cookie 累积过多 |
| 451 | Unavailable For Legal Reasons | 因法律原因不可用(如被要求下架的内容) |
五、5xx 服务端错误
| 状态码 | 名称 | 说明 |
|---|---|---|
| 500 | Internal Server Error | 服务端遇到未预期错误,最常见的兜底错误码,需要查日志定位堆栈 |
| 501 | Not Implemented | 服务端不支持该请求方法或功能 |
| 502 | Bad Gateway | 网关 / 反向代理从上游收到了无效响应,通常是后端进程挂了或端口不对 |
| 503 | Service Unavailable | 服务暂时不可用,如过载、维护、依赖未就绪,响应可带 Retry-After |
| 504 | Gateway Timeout | 网关等待上游响应超时,通常是后端处理过慢而非网关本身故障 |
| 505 | HTTP Version Not Supported | 不支持请求使用的 HTTP 协议版本 |
| 506 | Variant Also Negotiates | 内容协商配置导致循环,属于配置错误 |
| 507 | Insufficient Storage | WebDAV 中存储空间不足 |
| 508 | Loop Detected | WebDAV 中检测到无限循环 |
| 510 | Not Extended | 需要对请求做进一步扩展才能处理 |
| 511 | Network Authentication Required | 需要网络认证,常见于公共 WiFi 的强制登录门户 |
六、排查思路速记
- 4xx 一般不该重试(除 408、429),先检查参数、鉴权、路径与方法是否匹配。
- 5xx 可以有限重试(配合退避策略),同时优先看服务端日志与上游依赖状态。
- 502 与 504 常被混淆:502 是上游「答错了」,504 是上游「答得太慢」。
- 301 / 308 会被浏览器长期缓存,调试时容易拿到旧跳转,建议用无痕窗口或清缓存验证。
- 接口设计:创建成功用 201 +
Location,无返回体用 204,校验失败用 422,限流用 429。