HTTP 状态码详解
核心定义 HTTP 状态码是服务端对客户端请求处理结果的标准化响应码,用于表达请求成功、重定向、客户端错误或服务端错误。运维排障中,状态码是定位网关、服务和依赖异常的重要入口。
1. 状态码分类
| 分类 | 范围 | 含义 |
|---|---|---|
| 1xx | 100-199 | 信息响应,请求已收到并继续处理 |
| 2xx | 200-299 | 请求成功 |
| 3xx | 300-399 | 重定向 |
| 4xx | 400-499 | 客户端错误 |
| 5xx | 500-599 | 服务端错误 |
2. 常见 2xx 状态码
| 状态码 | 含义 | 典型场景 |
|---|---|---|
| 200 | OK | 请求成功并返回内容 |
| 201 | Created | 创建资源成功 |
| 204 | No Content | 请求成功但无响应体 |
3. 常见 3xx 状态码
| 状态码 | 含义 | 典型场景 |
|---|---|---|
| 301 | 永久重定向 | HTTP 跳 HTTPS、域名迁移 |
| 302 | 临时重定向 | 登录跳转、临时路由 |
| 304 | 未修改 | 浏览器缓存命中 |
4. 常见 4xx 状态码
| 状态码 | 含义 | 排查方向 |
|---|---|---|
| 400 | 请求格式错误 | 参数、JSON、Header 格式 |
| 401 | 未认证 | Token、Cookie、登录态 |
| 403 | 无权限 | RBAC、ACL、IP 白名单 |
| 404 | 资源不存在 | 路由、路径、服务发布 |
| 405 | 方法不允许 | GET/POST 方法不匹配 |
| 408 | 请求超时 | 客户端、网络、网关超时 |
| 429 | 请求过多 | 限流、风控、配额 |
5. 常见 5xx 状态码
| 状态码 | 含义 | 排查方向 |
|---|---|---|
| 500 | 服务内部错误 | 应用异常、代码错误 |
| 502 | Bad Gateway | 网关到上游失败、上游连接异常 |
| 503 | 服务不可用 | 上游无实例、过载、维护中 |
| 504 | Gateway Timeout | 网关等待上游超时 |
6. 排查思路
状态码排查应结合链路定位:
Client → DNS → LB/CDN → Ingress/Nginx/Gateway → Service → Pod/应用 → 依赖服务
常用命令:
curl -I https://example.com
curl -v https://example.com/api
排查重点:
- 4xx 优先看客户端请求、认证鉴权、路由和权限。
- 5xx 优先看网关日志、上游服务状态和应用日志。
- 502/503/504 要重点区分连接失败、无可用实例和上游超时。
- 301/302 要检查重定向目标是否正确。
7. 面试回答模板
标准回答 HTTP 状态码用于表示服务端对请求的处理结果。2xx 表示成功,3xx 表示重定向,4xx 表示客户端侧问题,5xx 表示服务端或网关侧问题。生产排查中,404 通常看路由和资源是否存在,401/403 看认证鉴权,502 看网关到上游连接,503 看服务是否可用,504 看上游响应是否超时。应结合网关日志、应用日志和链路拓扑逐层定位。
关联文档
- DNS 基础原理:理解域名解析对 HTTP 访问链路的影响。
- 数字证书与 SSL TLS:理解 HTTPS 握手和证书问题。
- K8s Ingress 详解:理解 Kubernetes 中 HTTP 流量入口。
