HTTP 状态码速查表 - HTTP 响应状态码大全

联调报错时,一个状态码往往能把你从"瞎猜"引向"定点排查"。本表按 1xx~5xx 分栏列出每种码的含义、典型成因与处理建议,覆盖 REST 接口返回给客户端、以及 Nginx/网关在边缘层的转发与限流报错两类场景,帮你解读日志、对齐前后端契约,并区分 401/403、302/307 这类易混用的码。读完可做到看码即知下一步查哪里。

参考手册·共 38 条命令·最后更新 2026-07-21
http状态码nginxrest

典型使用场景

联调接口报 500 时先看 5xx 栏,区分是代码异常还是网关转发失败;后端返回 401 提示先补 Token 或登录,403 则是认证通过但权限不足,需对照 4xx 语义检查接口授权;Nginx 报 413/429 时按对应排障说明调大 body 上限或限流配置;阅读后即便只看到状态码,也能确定下一步是查日志、改请求,还是调整服务端或网关配置。

1xx 信息 Informational 2

100 Continue
客户端应继续发送请求体,常用于大上传前的预检
101 Switching Protocols
协议切换,WebSocket 升级握手时返回

2xx 成功 Success 5

200 OK
请求成功,GET 返回资源,PUT/PATCH 返回更新结果
201 Created
资源创建成功,POST 请求后返回,Location 头指向新资源
202 Accepted
请求已接收但未处理完,异步任务/队列处理时返回
204 No Content
成功但无响应体,DELETE 请求常用
206 Partial Content
范围请求成功,断点续传 / 视频拖拽时返回

3xx 重定向 Redirection 6

301 Moved Permanently
永久重定向,SEO 权重转移,HTTP→HTTPS 跳转用
302 Found
临时重定向,不转移权重
303 See Other
重定向用 GET 获取,PRG 模式(表单提交后跳转)
304 Not Modified
资源未修改,用缓存,条件请求(If-None-Match)命中
307 Temporary Redirect
临时重定向,保持请求方法不变(302 可能改 POST 为 GET)
308 Permanent Redirect
永久重定向,保持请求方法不变

4xx 客户端错误 Client Error 17

400 Bad Request
请求语法错误,如 JSON 格式不合法、缺少必填参数
401 Unauthorized
未认证,缺少或无效的 Token/Cookie,需登录
403 Forbidden
已认证但无权限,如普通用户访问管理接口
404 Not Found
资源不存在,URL 路径错误或资源已删除
405 Method Not Allowed
请求方法不允许,如对只支持 GET 的接口发 POST
406 Not Acceptable
请求的 Accept 头无法满足,内容协商无可用格式
408 Request Timeout
请求超时,客户端未在规定时间内发送完请求
409 Conflict
资源冲突,如重复创建、并发修改
410 Gone
资源已永久删除,SEO 中告知爬虫不再索引(比 404 更明确)
413 Payload Too Large
请求体过大,Nginx client_max_body_size 限制
415 Unsupported Media Type
不支持的 Content-Type,如接口要 JSON 却发 form
418 I'm a teapot
愚人节彩蛋(RFC 2324),茶壶不能煮咖啡
422 Unprocessable Entity
语义错误,如字段格式对但值非法,Rails API 校验失败常用
426 Upgrade Required
要求客户端升级协议,如强制 TLS 或 HTTP/2
429 Too Many Requests
请求频率超限,限流触发(如 Nginx limit_req)
431 Request Header Fields Too Large
请求头过大,如 Cookie 过多,需清理或调大头限制
451 Unavailable For Legal Reasons
因法律原因不可用,如内容审查、DMCA 下架

5xx 服务端错误 Server Error 8

500 Internal Server Error
服务端内部错误,代码异常、空指针等
501 Not Implemented
服务器不支持该请求方法
502 Bad Gateway
网关收到上游无效响应,Nginx 连不上后端或后端崩溃
503 Service Unavailable
服务不可用,过载、维护中或限流,Retry-After 头提示重试时间
504 Gateway Timeout
网关等待上游超时,Nginx proxy_read_timeout 超限
505 HTTP Version Not Supported
不支持 HTTP 协议版本
507 Insufficient Storage
存储空间不足,WebDAV 写入失败时返回
511 Network Authentication Required
需网络认证,公共 WiFi 登录页场景

命令示例

只看接口返回的状态码

curl -s -o /dev/null -w "%{http_code}\n" https://api.example.com/users/1

用 curl 丢弃响应体只输出状态码:200 成功、404 路径不符、401 缺凭证、500 服务端异常,适合一行判断接口是否可用。

输出

200

统计 Nginx 访问日志里的 5xx 分布

awk '$9 ~ /^5[0-9][0-9]$/ {print $9}' /var/log/nginx/access.log | sort | uniq -c

区别权重:502 是拿到上游无效响应(后端崩溃/拒绝连接),504 是连接成功但等待超时,据此决定查后端进程还是调高 proxy timeouts。

输出

      3 502
      5 504

确认 429 触发限流后的重试时机

curl -i https://api.example.com/search?q=laohand

429 表示触发限流,优先读取 Retry-After 响应头(单位秒)再重试,避免继续打爆接口或被封禁。

输出

HTTP/1.1 429 Too Many Requests
Retry-After: 120

常见坑与注意事项

  • 不要用 200 包错误码:若接口用 200 + 响应体内业务码表达失败,前端无法靠状态码判断成败,属于反模式。
  • 301 会被浏览器/Clients 缓存:改回源 URL 前先清缓存或用 302 临时跳,避免看到旧跳转。
  • 400 与 422 都表示请求有误:400 是语法/结构不合法,422 是字段值非法(语义错误),校验失败接参时更贴切。
  • 502 与 503 别混用:502 是网关拿到无效上游响应,503 是服务主动不可用(过载/维护),混淆会误导告警归类。
  • 排查时确认响应是否被代理层改写:Nginx 默认错误页可能掩盖真实上游状态码,调试先看真正后端返回。

提示

  • 502 vs 504:502 是后端返回了无效响应(崩溃/拒绝连接),504 是后端连接成功但响应超时。
  • 401 vs 403:401 是"你是谁"(未认证),403 是"你不能做"(已认证但无权限)。
  • Nginx 413 解决:调大 client_max_body_size;429 解决:检查 limit_req 限流配置。

常见问题

常见的 HTTP 状态码有哪些?

按首位数字分 5 类:1xx 信息(如 100 Continue)、2xx 成功(200 OK、201 Created)、3xx 重定向(301 永久、302 临时、304 未改)、4xx 客户端错误(400/401/403/404/429)、5xx 服务端错误(500/502/503/504)。本页按 1xx~5xx 全系列列出含义、成因与排障建议。

401 和 403 有什么区别?

401 表示「未认证」——请求没带身份凭证或凭证无效,需要登录;403 表示「已认证但无权限」——身份没问题,但不允许访问该资源。先看有没有登录,再判断权限。

301 和 302 重定向有什么不同?

301 是永久重定向,浏览器和搜索引擎会把权重与书签迁到新地址;302 是临时重定向,原地址仍保留。做迁移用 301,做 A/B 或临时跳转用 302。

接口返回 4xx 和 5xx 怎么区分是谁的问题?

4xx 是客户端问题(参数错、未登录、无权限、路径不存在),先查请求;5xx 是服务端问题(代码异常、后端超时、网关 502/504),先查服务端日志与依赖。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们