Skip to content

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 服务端错误通常需要后端排查与修复。