内容纲要
						
						HTTP 状态码大全
标签:HTTP, 状态码, Web开发, 网络协议, 后端开发, 前端开发, API设计, RESTful, 调试, 网络通信
📚 目录
1. 什么是 HTTP 状态码
HTTP 状态码(HTTP Status Code)是服务器在响应客户端请求时返回的 3 位数字,用于表明请求结果状态。
HTTP 状态码的作用:
- 告诉客户端请求的处理结果(成功、失败、重定向等)
 - 帮助开发者调试网络请求
 - 让 API 调用方根据状态码采取相应逻辑(重试、提示用户、缓存等)
 
📄 标准定义在 IETF RFC 7231。


2. 状态码分类
| 范围 | 分类名称 | 说明 | 
|---|---|---|
| 1xx | 信息响应(Informational) | 请求已接收,继续处理 | 
| 2xx | 成功响应(Success) | 请求成功被服务器接收、理解并处理 | 
| 3xx | 重定向(Redirection) | 需要进一步操作以完成请求 | 
| 4xx | 客户端错误(Client Error) | 请求错误或无法处理(客户端问题) | 
| 5xx | 服务器错误(Server Error) | 服务器未能完成有效请求(服务器问题) | 
3. HTTP 状态码详解
3.1 1xx 信息响应
| 状态码 | 名称 | 说明 | 
|---|---|---|
| 100 | Continue | 继续,请求正常进行(常用于分块上传) | 
| 101 | Switching Protocols | 协议切换(如 WebSocket) | 
| 102 | Processing (WebDAV) | 请求已接收,处理中 | 
| 103 | Early Hints | 提前返回部分响应头(预加载资源) | 
3.2 2xx 成功响应
| 状态码 | 名称 | 说明 | 
|---|---|---|
| 200 | OK | 请求成功(常用) | 
| 201 | Created | 请求成功并创建了资源 | 
| 202 | Accepted | 请求已接受,尚未处理(异步任务) | 
| 204 | No Content | 请求成功但无返回内容 | 
| 206 | Partial Content | 部分内容(断点续传) | 
| 207 | Multi-Status (WebDAV) | 多状态 | 
| 208 | Already Reported (WebDAV) | 已报告 | 
| 226 | IM Used | 变更已完成 | 
✅ 示例
HTTP/1.1 201 Created
Content-Type: application/json
{
  "id": 123,
  "message": "User created successfully"
}
3.3 3xx 重定向
| 状态码 | 名称 | 说明 | 
|---|---|---|
| 301 | Moved Permanently | 永久重定向 | 
| 302 | Found | 临时重定向 | 
| 303 | See Other | 应使用 GET 请求新 URL | 
| 304 | Not Modified | 资源未修改,可用缓存 | 
| 307 | Temporary Redirect | 临时重定向(保留方法) | 
| 308 | Permanent Redirect | 永久重定向(保留方法) | 
3.4 4xx 客户端错误
| 状态码 | 名称 | 说明 | 
|---|---|---|
| 400 | Bad Request | 请求参数错误 | 
| 401 | Unauthorized | 未授权 | 
| 403 | Forbidden | 禁止访问 | 
| 404 | Not Found | 资源不存在 | 
| 405 | Method Not Allowed | 方法不被允许 | 
| 408 | Request Timeout | 请求超时 | 
| 409 | Conflict | 请求冲突 | 
| 410 | Gone | 资源已删除 | 
| 413 | Payload Too Large | 请求体过大 | 
| 415 | Unsupported Media Type | 媒体类型不支持 | 
| 418 | I'm a teapot (彩蛋) | 我是茶壶 | 
| 422 | Unprocessable Entity (WebDAV) | 无法处理的实体 | 
| 429 | Too Many Requests | 请求过多(限流) | 
| 451 | Unavailable For Legal Reasons | 因法律原因不可用 | 
3.5 5xx 服务器错误
| 状态码 | 名称 | 说明 | 
|---|---|---|
| 500 | Internal Server Error | 服务器内部错误 | 
| 501 | Not Implemented | 未实现 | 
| 502 | Bad Gateway | 网关错误 | 
| 503 | Service Unavailable | 服务不可用 | 
| 504 | Gateway Timeout | 网关超时 | 
| 505 | HTTP Version Not Supported | HTTP 版本不支持 | 
| 507 | Insufficient Storage (WebDAV) | 存储空间不足 | 
| 511 | Network Authentication Required | 需要网络认证 | 
4. 开发中常见使用场景
| 场景 | 状态码 | 
|---|---|
| API 成功返回数据 | 200 OK | 
| 创建新用户 | 201 Created | 
| 用户登录凭证过期 | 401 Unauthorized | 
| 访问受限资源 | 403 Forbidden | 
| 资源不存在 | 404 Not Found | 
| 请求数据格式错误 | 400 Bad Request | 
| 触发限流 | 429 Too Many Requests | 
| 服务维护 | 503 Service Unavailable | 
| 文件断点续传 | 206 Partial Content | 
| 页面永久迁移 | 301 Moved Permanently | 
5. HTTP 状态码使用建议
- 符合标准
避免所有返回都用 200,错误请求应返回 4xx,服务器异常返回 5xx。 - 
配合响应体
状态码配合 JSON 详细说明错误:{ "error": "Invalid parameters", "code": 4001 } - 使用缓存相关状态码
304、412 可减少带宽消耗。 - 速率限制提示
配合429 Too Many Requests返回Retry-After头。 - 日志记录
遇到 5xx 及时记录日志并告警。