内容纲要
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 及时记录日志并告警。