HTTP 网络状态码完全解析
HTTP 状态码是服务器对客户端请求的「响应状态标识」,由 3 位数字组成,第一位数字定义了状态码的类别,核心用于 Web 开发中定位请求失败原因、处理接口响应逻辑。
一、状态码分类(按首位数字)
| 类别 | 首位数字 | 含义 | 典型场景 |
|---|---|---|---|
| 信息型 | 1xx | 服务器已接收请求,继续处理 | 仅临时响应,极少主动处理 |
| 成功型 | 2xx | 请求成功处理并返回结果 | 接口调用成功、页面加载成功 |
| 重定向 | 3xx | 需要客户端进一步操作完成请求 | 页面跳转、资源永久迁移 |
| 客户端错误 | 4xx | 客户端请求有误,服务器无法处理 | 参数错误、权限不足、资源不存在 |
| 服务器错误 | 5xx | 服务器处理请求时出错 | 服务器崩溃、接口逻辑异常 |
二、开发中高频使用的状态码
1. 成功型(2xx)—— 核心是「请求没问题」
| 状态码 | 名称 | 含义 & 开发场景 |
|---|---|---|
| 200 | OK | 最常用:请求成功,服务器返回数据(如接口查询成功、静态资源加载成功) |
| 201 | Created | 请求成功并创建了新资源(如提交表单创建用户、上传文件到OSS成功) |
| 204 | No Content | 请求成功,但服务器无数据返回(如删除操作成功,仅告知结果无需返回内容) |
2. 重定向(3xx)—— 核心是「需要跳转/重新请求」
| 状态码 | 名称 | 含义 & 开发场景 |
|---|---|---|
| 301 | Moved Permanently | 永久重定向(如旧域名跳转到新域名、资源永久迁移,浏览器会缓存跳转规则) |
| 302 | Found | 临时重定向(如未登录用户访问需要权限的页面,跳转到登录页,不缓存) |
| 304 | Not Modified | 协商缓存命中:客户端缓存的资源未过期,服务器无需返回资源(优化加载速度) |
3. 客户端错误(4xx)—— 核心是「客户端的问题」
| 状态码 | 名称 | 含义 & 开发场景 |
|---|---|---|
| 400 | Bad Request | 请求参数错误(如接口传参格式不对、缺少必传字段) |
| 401 | Unauthorized | 未授权:需要登录/Token失效(如前端未带token请求需要权限的接口) |
| 403 | Forbidden | 拒绝访问:已登录但无权限(如普通用户访问管理员接口、IP被封禁) |
| 404 | Not Found | 资源不存在(如访问不存在的接口、图片链接失效、页面路径错误) |
| 405 | Method Not Allowed | 请求方法错误(如用GET请求仅支持POST的接口、DELETE请求用成PUT) |
| 408 | Request Timeout | 请求超时(如前端请求后端接口超过设定超时时间,需检查网络或接口响应速度) |
| 413 | Payload Too Large | 请求体过大(如上传文件超过服务器限制、表单数据量超标) |
| 429 | Too Many Requests | 请求过于频繁(触发接口限流/反爬机制,需加限流提示或重试逻辑) |
4. 服务器错误(5xx)—— 核心是「服务器的问题」
| 状态码 | 名称 | 含义 & 开发场景 |
|---|---|---|
| 500 | Internal Server Error | 服务器内部错误(如接口代码bug、数据库连接失败,最常见的服务端错误) |
| 502 | Bad Gateway | 网关错误(如反向代理服务器(Nginx)联系不上后端服务、接口集群故障) |
| 503 | Service Unavailable | 服务不可用(如服务器维护、过载,临时无法处理请求,可提示“服务繁忙请稍后重试”) |
| 504 | Gateway Timeout | 网关超时(如Nginx等待后端响应超时,需检查后端接口响应速度或服务器负载) |
5. 信息型(1xx)—— 极少处理,了解即可
| 状态码 | 名称 | 含义 |
|---|---|---|
| 100 | Continue | 服务器已接收请求头,客户端可继续发送请求体(如大文件上传的预检) |
| 101 | Switching Protocols | 协议切换(如HTTP升级为WebSocket,实现双向通信) |
三、开发中实用技巧
前端处理逻辑
- 2xx:正常解析返回数据(如渲染列表、展示图片);
- 3xx:根据状态码处理跳转(如302跳登录页,304使用缓存资源);
- 4xx:给用户提示(如404提示“页面不存在”,429提示“操作太频繁”);
- 5xx:提示“服务器异常”,并记录错误日志(便于排查)。
常见排错场景
- 调用接口返回404:先检查接口URL是否拼写错误,再确认后端是否部署该接口;
- 上传图片到OSS返回403:检查OSS的访问权限、Token是否过期、跨域配置;
- 接口返回502/504:大概率是后端服务挂了或响应超时,联系后端排查;
- 静态资源返回304:是正常的缓存优化,无需处理。
状态码自定义扩展 部分项目会在200基础上自定义业务码(如
{ code: 200, msg: '成功' }、{ code: 20001, msg: '参数缺失' }),注意:HTTP状态码仍用标准值,业务码放在响应体中。