当浏览器或程序向服务器发出 HTTP 请求,响应中会包含一个三位数状态码。它是对请求处理结果的简要描述。读状态码时,先看第一位所属的类别,再结合请求方法、响应头和内容判断细节。
五大类别#
1xx 表示信息性响应;2xx 表示请求已成功处理;3xx 表示还需要进一步动作,常见是重定向;4xx 表示请求一侧出现问题;5xx 表示服务器处理请求时出错。类别是排查入口,不是全部结论。
| 状态码 | 常见含义 | 排查时先看什么 |
|---|---|---|
| 200 OK | 请求成功 | 内容是否符合预期 |
| 201 Created | 成功创建资源 | Location 或返回的新资源信息 |
| 301 Moved Permanently | 永久重定向 | 新地址与缓存行为 |
| 302 Found | 临时重定向 | Location 指向哪里 |
| 304 Not Modified | 缓存副本仍可用 | 条件请求和缓存头 |
| 400 Bad Request | 请求格式等问题 | 参数与请求体 |
| 401 Unauthorized | 需要身份验证 | 是否携带有效凭据 |
| 403 Forbidden | 服务器拒绝访问 | 权限与访问规则 |
| 404 Not Found | 未找到目标资源 | URL 与路由 |
| 429 Too Many Requests | 请求过于频繁 | 限流策略和重试间隔 |
| 500 Internal Server Error | 服务器内部错误 | 服务端日志 |
| 502 Bad Gateway | 网关从上游收到无效响应 | 反向代理与上游连接 |
| 503 Service Unavailable | 服务暂时不可用 | 服务状态与容量 |
几个容易混淆的例子#
401 与 403 的区别通常是:前者表示当前请求缺少有效身份验证,后者表示服务器理解请求但拒绝执行。404 不一定说明服务器不存在;它也可能是路径拼错、资源已删除,或应用故意不公开某个资源。
304 并不是普通意义的“网页没内容”,而是缓存协商的结果:客户端可以继续使用已有副本。502 通常提示网关或反向代理与上游服务之间出了问题,排查应沿请求链逐段看。
用命令快速查看#
sh
curl -I https://example.com/
curl -L -I https://example.com/第一条查看响应头;第二条会跟随重定向。排查时记录请求 URL、方法、状态码、Location 与时间,往往比只截一张错误页面更有帮助。