一、状态码分类逻辑
HTTP状态码按首位数字分为5类,构成Web通信的「响应语言」:
- 1xx:信息性状态(协议处理中)
- 2xx:成功状态(请求已达成)
- 3xx:重定向状态(资源位置变更)
- 4xx:客户端错误(请求不合法)
- 5xx:服务端错误(服务器处理失败)
这种分类方式让开发者能快速定位请求问题的大致方向,极大提升调试效率。
二、全量状态码速查表
1xx Informational(信息响应)
状态码 | 名称 | 典型场景 | 补充说明 |
---|
100 | Continue | 客户端应继续发送请求体 | 常用于大文件上传,先确认服务器接收意向 |
101 | Switching Protocols | 服务器同意升级协议(如WebSocket) | 需在请求头中指定Upgrade 字段 |
102 | Processing | 服务器正在处理但未完成 | 多用于WebDAV协议下的复杂操作 |
2xx Success(成功响应)
状态码 | 名称 | 关键特性 | 常见应用场景 |
---|
200 | OK | 标准成功响应 | GET请求成功返回数据 |
201 | Created | 资源创建成功(POST返回新URL) | 接口创建用户、商品等资源时使用 |
202 | Accepted | 请求已接收但未处理完 | 异步任务提交(如文件上传排队) |
204 | No Content | 响应体为空(如DELETE成功) | 删除资源后,减少不必要的数据传输 |
3xx Redirection(重定向)
状态码 | 名称 | 缓存行为 | 方法保留规则 | 适用场景 |
---|
301 | Moved Permanently | 永久缓存 | GET可能变HEAD | 网站域名更换、页面永久迁移 |
302 | Found | 临时缓存 | 方法可能改变 | 登录成功后跳转首页 |
307 | Temporary Redirect | 不缓存 | 强制保留原始方法 | 临时维护页面跳转 |
308 | Permanent Redirect | 永久缓存 | 强制保留原始方法 | API接口版本永久变更 |
4xx Client Error(客户端错误)
状态码 | 名称 | 高频触发场景 | 修复建议 |
---|
400 | Bad Request | 请求语法错误 | 检查参数格式、请求头完整性 |
401 | Unauthorized | 未提供有效身份凭证 | 添加认证信息(如Token、Basic Auth) |
403 | Forbidden | 权限不足(如访问私有文件) | 确认用户角色权限配置 |
404 | Not Found | 资源不存在 | 检查URL路径或资源删除逻辑 |
429 | Too Many Requests | 触发速率限制 | 调整请求频率或申请更高配额 |
5xx Server Error(服务端错误)
状态码 | 名称 | 故障类型 | 排查方向 |
---|
500 | Internal Server Error | 未分类的服务器错误 | 检查服务器日志、代码异常捕获 |
502 | Bad Gateway | 上游服务器无响应 | 确认网关配置、后端服务健康状态 |
503 | Service Unavailable | 主动停机维护/过载 | 查看维护公告、扩容服务器资源 |
504 | Gateway Timeout | 上游服务器响应超时 | 优化网络配置、增加超时重试机制 |
三、关键场景实战指南
1. SEO优化组合拳
- 301+308:永久迁移时保留链接权重
- 429+Retry-After:应对爬虫时友好限流
2. API设计黄金法则
GET /api/users/1 HTTP/1.1
-> 200 OK(成功)
-> 404 Not Found(资源不存在)
-> 410 Gone(资源已删除且无新地址)
3. 错误处理最佳实践
- 4xx错误必须返回清晰错误详情(如JSON Body)
- 5xx错误应记录完整日志链(Request-ID追踪)
四、冷知识彩蛋
418 I'm a teapot:源自HTTP愚人节RFC(真实存在于某些库中)
206 Partial Content:支持断点续传的核心状态码