HTTP 状态码速查表 - HTTP 响应状态码大全
联调报错时,一个状态码往往能把你从"瞎猜"引向"定点排查"。本表按 1xx~5xx 分栏列出每种码的含义、典型成因与处理建议,覆盖 REST 接口返回给客户端、以及 Nginx/网关在边缘层的转发与限流报错两类场景,帮你解读日志、对齐前后端契约,并区分 401/403、302/307 这类易混用的码。读完可做到看码即知下一步查哪里。
典型使用场景
联调接口报 500 时先看 5xx 栏,区分是代码异常还是网关转发失败;后端返回 401 提示先补 Token 或登录,403 则是认证通过但权限不足,需对照 4xx 语义检查接口授权;Nginx 报 413/429 时按对应排障说明调大 body 上限或限流配置;阅读后即便只看到状态码,也能确定下一步是查日志、改请求,还是调整服务端或网关配置。
1xx 信息 Informational 2
100 Continue101 Switching Protocols2xx 成功 Success 5
200 OK201 Created202 Accepted204 No Content206 Partial Content3xx 重定向 Redirection 6
301 Moved Permanently302 Found303 See Other304 Not Modified307 Temporary Redirect308 Permanent Redirect4xx 客户端错误 Client Error 17
400 Bad Request401 Unauthorized403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable408 Request Timeout409 Conflict410 Gone413 Payload Too Large415 Unsupported Media Type418 I'm a teapot422 Unprocessable Entity426 Upgrade Required429 Too Many Requests431 Request Header Fields Too Large451 Unavailable For Legal Reasons5xx 服务端错误 Server Error 8
500 Internal Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Version Not Supported507 Insufficient Storage511 Network Authentication Required命令示例
只看接口返回的状态码
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=laohand429 表示触发限流,优先读取 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日,内容持续校对官方文档。