Appearance
HTTP 状态码常见分类与说明
1XX:信息性状态码
- 表示请求已被接收,继续处理。实际开发中很少遇到。
2XX:成功
表示请求被正确处理。
200 OK:请求成功。
201 Created:请求成功并创建了新的资源。常用于 POST 请求创建资源。
204 No Content:服务器成功处理了请求,但没有返回任何内容。常用于 PUT/DELETE 请求,表示无需返回内容。
206 Partial Content:断点续传。服务器成功处理了部分 GET 请求(如 Range 请求)。
3XX:重定向
表示需要客户端进一步操作才能完成请求。常用于负载均衡、内容迁移、视频防盗链等场景。
301 Moved Permanently:永久重定向。
请求的资源已被永久分配新 URL,原地址不可访问。响应头包含Location字段指向新地址。搜索引擎会用新 URL 替换旧 URL。规范上,POST 请求重定向需要用户确认且应继续用 POST 方法,但实际浏览器多数会自动重定向并可能改变为 GET,规范实现不完全一致。例如:
Location: http://www.jd.com/302 Found(原为 Temporarily Moved):临时重定向。
请求的资源临时分配新 URL,原地址仍可访问。响应头包含Location字段。HTTP/1.0 规定 GET/HEAD 可以自动重定向,POST 不建议自动跳转,但实际浏览器通常都会自动跳转,并可能将 POST 改为 GET,因此产生二义性(302 劫持、SEO 问题等)。
HTTP/1.1 推荐用 303 和 307 取代 302,302 主要用于兼容。303 See Other:查看其他资源。
明确要求客户端用 GET 方法获取新资源。无论原请求是 GET 还是 POST,都会自动用 GET 重定向。主要用于 HTTP/1.1 细化 302 的行为。307 Temporary Redirect:临时重定向。
明确要求客户端在重定向时必须使用原请求方法(如 POST 还是 POST)。如果是 POST,则不允许自动重定向,只有 GET/HEAD 可以自动重定向。用于消除 302 的不确定性。308 Permanent Redirect:永久重定向。
与 301 类似,但 308 保证重定向时请求方法和消息体不会改变(如 POST 还是 POST)。304 Not Modified:协商缓存命中。
客户端有缓存副本,且未被修改,响应无消息体,通常用于 GET/HEAD 请求。
4XX:客户端错误
表示请求有语法错误或不能被处理。
400 Bad Request:请求参数有误,服务器无法理解请求。
401 Unauthorized:请求未认证。需要身份验证(如登录、Token)。
403 Forbidden:服务器拒绝请求。权限不足或资源禁止访问。
404 Not Found:请求的资源不存在。
其他常见 4XX:
- 405 Method Not Allowed:请求方法被禁止
- 408 Request Timeout:请求超时
- 429 Too Many Requests:请求过多,被限流
5XX:服务端错误
表示服务器内部出现错误,无法完成请求。
500 Internal Server Error:服务器内部错误,无法完成请求。
502 Bad Gateway:网关或代理服务器收到无效响应。
503 Service Unavailable:服务器当前无法处理请求,通常是超载或维护中。
504 Gateway Timeout:网关或代理服务器请求超时。
补充说明
- 3XX 重定向系列在 HTTP/1.1 后进一步细化,规范与浏览器实现存在差异,开发时需注意自动重定向的行为。
- 304 是一种特殊的 3XX,用于缓存,不改变客户端的请求方法。
- 4XX 客户端错误需关注安全、认证、权限控制。
- 5XX 服务端错误通常需要后端排查与修复。