引言
HTTP 状态码是服务器对客户端请求的标准化响应标识,属于应用层协议的核心机制。其采用三位数字编码,首位数字定义状态类别,后两位细化具体场景。
状态码不仅是服务端行为的声明,更是客户端处理响应的关键依据。本文将从协议规范出发,系统性解析常见状态码及其工程应用。
一、状态码分类标准
根据 RFC 9110 标准,HTTP 状态码按首位数字分为五类:

类别 | 定义 | 典型场景 |
---|---|---|
1xx | 信息性响应 | 请求已被接收,继续处理 |
2xx | 成功操作 | 请求已被正确处理完 |
3xx | 重定向 | 需客户端进一步操作 |
4xx | 客户端错误 | 请求包含语法错误, |
5xx | 服务器错误 | 服务器处理请求失败 |
看着挺多的是不是?不用慌!下面我们来用通俗的语言逐个讲解,确保大家看完都难听懂学会!
二、1xx 信息性状态码
1xx
状态码表示请求已被接收,需继续处理。此类状态码在实际开发中较为少见,这部分大家看看就行了,通常由服务器或代理自动处理,无需客户端干预。常见状态码包括:
- 100 Continue:客户端应继续发送请求体。
- 101 Switching Protocols:服务器同意切换协议(如从 HTTP 升级到 WebSocket)。
二、2xx 成功类状态码
2xx 状态码表示请求已被服务器成功接收、理解并处理。
200 OK(最常见的)
定义:请请求成功,响应中包含请求的结果数据。
场景:
GET 请求获取资源数据
POST 请求返回创建结果
示例:查询用户信息时,服务器返回用户数据。
HTTP/1.1 200 OK Content-Type: application/json{"id": 2337504725, "name": "Xiaoliang"}
201 Created
定义:请求成功并在服务器创建了一个或多个新资源。
场景:
RESTful API 创建新资源
批量创建操作(返回多个资源地址)
技术细节:响应头应包含 Location 字段指向新资源的 URI(如 /users/2337504725)。
示例:提交表单创建新用户,服务器返回 201 及用户 ID。
HTTP/1.1 201 Created Location: /api/users/2337504725
202 Accepted
定义:请求已接收但未完成处理,适用于异步任务。
场景:
大数据导出任务
耗时计算任务
实现细节:
需配合任务队列机制
应返回任务状态查询接口
示例:触发数据导出后,服务器返回 202 表示任务已排队。
204 No Content
定义:成功执行但无实体返回,响应头可能包含更新元数据。
场景:
DELETE 操作成功
表单提交无需刷新页面
技术要求:
必须不包含消息体
客户端不应改变当前文档视图
示例:删除资源后,服务器返回 204 表示操作成功。
三、3xx 重定向状态码(常见且重要)
3xx
状态码表示客户端需采取进一步操作以完成请求。
301 Moved Permanently
- 定义:资源已被永久重定向到新 URI。
- 场景:网站域名变更或资源路径永久调整。比如你经常看的某个网站的网址更换了。
- 技术细节:客户端应缓存新 URI,后续请求直接访问新地址。
302 Found
- 定义:资源临时重定向到新 URI。
- 场景:短期的维护页面跳转或 A/B 测试。比如你经常访问的网站的某些资源被暂时转移到另外一个网址了。
- 技术细节:客户端后续请求仍使用原 URI。
四、4xx 客户端错误状态码
4xx
状态码表示客户端请求存在错误。
400 Bad Request
- 定义:请求语法或参数错误,服务器无法解析。
- 场景:表单字段格式错误、JSON 数据格式无效。
- 示例:提交的 JSON 缺少必填字段。
401 Unauthorized
- 定义:请求需要身份认证。
- 场景:未登录用户访问需认证的 API。
- 技术细节:响应头需包含
WWW-Authenticate
字段指明认证方式。
403 Forbidden
- 定义:服务器理解请求但拒绝执行。
- 场景:权限不足(如普通用户访问管理员接口)。
- 与 401 的区别:401 表示未认证,403 表示已认证但无权限。
404 Not Found(是不是很熟悉)
- 定义:请求资源在服务器里面不存在。相信大家都试过吧?嘿嘿
- 场景:访问的 URL 路径错误或资源已被删除。
409 Conflict
- 定义:请求与服务器当前状态冲突。
- 场景:资源版本冲突(如并发编辑)、重复创建唯一性资源。
- 示例:用户注册时邮箱已存在。
五、5xx 服务端错误状态码(重要)
5xx
状态码表示服务器处理请求时发生错误。
500 Internal Server Error
- 定义:服务器内部错误,无法完成请求。
- 场景:代码异常未捕获、数据库连接失败。
- 排查方向:检查服务器日志及错误堆栈。
502 Bad Gateway
- 定义:网关或代理服务器从上游服务器收到无效响应。
- 场景:反向代理后的服务崩溃或超时。
- 示例:Nginx 代理的后端服务无响应。
附:快速参考表
状态码 | 名称 | 适用场景 |
---|---|---|
200 | OK | 标准成功响应 |
201 | Created | 资源创建成功 |
204 | No Content | 成功无返回体 |
301 | Moved Permanently | 永久重定向 |
302 | Found | 临时重定向 |
400 | Bad Request | 客户端请求错误 |
401 | Unauthorized | 需要身份认证 |
403 | Forbidden | 拒绝访问 |
404 | Not Found | 资源不存在 |
500 | Internal Server Error | 服务器内部错误 |
502 | Bad Gateway | 网关代理服务器收到无效响应 |
503 | Service Unavailable | 服务不可用(临时过载或维护) |