HTTP 状态码查询
HTTP状态码是服务器对客户端请求的响应状态的三位数字代码。了解这些状态码对于Web开发和调试非常重要。
状态码分类
HTTP状态码按第一个数字分为5类:
1xx - 信息响应
表示请求已被接收,继续处理。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 100 | Continue | 客户端应继续发送请求的剩余部分 |
| 101 | Switching Protocols | 服务器同意切换协议 |
| 102 | Processing | 服务器已收到请求,正在处理 |
| 103 | Early Hints | 用于在最终响应前返回一些提示头信息 |
2xx - 成功响应
表示请求已成功被服务器接收、理解并接受。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 200 | OK | 请求成功,响应中包含请求的数据 |
| 201 | Created | 请求成功,并在服务器上创建了新资源 |
| 202 | Accepted | 请求已接受,但尚未处理完成 |
| 204 | No Content | 请求成功,但响应中无内容 |
| 206 | Partial Content | 部分内容响应(用于断点续传) |
3xx - 重定向
表示需要客户端采取进一步的操作才能完成请求。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 301 | Moved Permanently | 永久重定向 |
| 302 | Found | 临时重定向 |
| 304 | Not Modified | 资源未修改,可使用缓存 |
| 307 | Temporary Redirect | 临时重定向(保持请求方法) |
| 308 | Permanent Redirect | 永久重定向(保持请求方法) |
4xx - 客户端错误
表示客户端可能出错,妨碍了服务器的处理。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 400 | Bad Request | 请求语法错误 |
| 401 | Unauthorized | 需要身份验证 |
| 403 | Forbidden | 服务器理解请求但拒绝执行 |
| 404 | Not Found | 请求的资源不存在 |
| 405 | Method Not Allowed | 请求方法不被允许 |
| 429 | Too Many Requests | 请求频率过高 |
5xx - 服务器错误
表示服务器在处理请求的过程中发生了错误。
| 状态码 | 名称 | 含义 |
|---|---|---|
| 500 | Internal Server Error | 服务器内部错误 |
| 502 | Bad Gateway | 网关错误 |
| 503 | Service Unavailable | 服务不可用 |
| 504 | Gateway Timeout | 网关超时 |
常用状态码详解
200 OK
含义:请求成功,服务器返回了请求的数据。 场景:GET请求成功获取资源,POST请求成功处理。
201 Created
含义:请求成功并在服务器上创建了新资源。
场景:POST请求创建新资源后返回。
响应头:通常包含 Location 头指示新资源的URL。
301 Moved Permanently
含义:请求的资源已永久移动到新位置。 场景:网站改版、URL结构调整。 注意:搜索引擎会更新索引到新URL。
302 Found
含义:请求的资源临时移动到其他位置。 场景:临时维护、A/B测试。
400 Bad Request
含义:客户端请求语法错误,服务器无法理解。 常见原因:
- JSON格式错误
- 缺少必要参数
- 参数类型错误
401 Unauthorized
含义:请求需要用户认证。
响应头:包含 WWW-Authenticate 头指示认证方式。
403 Forbidden
含义:服务器理解请求但拒绝执行。 与401的区别:401是未认证,403是已认证但权限不足。
404 Not Found
含义:请求的资源在服务器上不存在。 场景:URL拼写错误、资源已被删除。
500 Internal Server Error
含义:服务器遇到意外情况,无法完成请求。 常见原因:代码bug、数据库连接失败、配置错误。
状态码记忆技巧
按数字范围记忆
- 1xx:信息类 - “请稍等,正在处理”
- 2xx:成功类 - “一切顺利”
- 3xx:重定向类 - “请去别处看看”
- 4xx:客户端错误 - “你的请求有问题”
- 5xx:服务器错误 - “我这边出问题了”
重要状态码口诀
- 200:成功OK
- 301:永久搬家
- 302:临时串门
- 404:找不到了
- 500:服务器挂了
开发中的状态码使用
RESTful API设计
http
GET /users/123 -> 200 OK (成功获取用户)
POST /users -> 201 Created (创建用户成功)
PUT /users/123 -> 200 OK (更新用户成功)
DELETE /users/123 -> 204 No Content (删除用户成功)
GET /users/999 -> 404 Not Found (用户不存在)
错误处理最佳实践
- 选择合适的错误码:不要滥用500错误
- 提供清晰的错误信息:在响应体中包含错误详情
- 一致性:相同类型的错误使用相同的状态码
- 安全性:避免在错误响应中泄露敏感信息
状态码对照表
| 状态码 | 含义 | 使用场景 |
|---|---|---|
| 200 | 成功 | 正常请求响应 |
| 201 | 已创建 | 创建新资源成功 |
| 204 | 无内容 | 删除成功或无需返回内容 |
| 301 | 永久重定向 | 网站改版、URL永久变更 |
| 302 | 临时重定向 | 临时维护、A/B测试 |
| 304 | 未修改 | 缓存有效 |
| 400 | 错误请求 | 参数错误、格式错误 |
| 401 | 未授权 | 需要登录认证 |
| 403 | 禁止访问 | 权限不足 |
| 404 | 未找到 | 资源不存在 |
| 405 | 方法不允许 | 使用了错误的HTTP方法 |
| 429 | 请求过多 | 频率限制触发 |
| 500 | 服务器错误 | 服务器内部异常 |
| 502 | 错误网关 | 上游服务不可用 |
| 503 | 服务不可用 | 服务器过载或维护 |
| 504 | 网关超时 | 上游服务响应超时 |
总结
HTTP状态码是Web开发的基础知识,正确理解和使用状态码可以:
- 提高API的可用性和可维护性
- 便于调试和错误排查
- 改善用户体验
- 优化搜索引擎表现
建议在实际开发中,根据具体业务场景选择合适的HTTP状态码,并保持一致性。
最后更新:2026-02-05