常见的 HTTP 状态码及简要解释

8 阅读3分钟

常见的 HTTP 状态码(按类别)及简要解释与常见含义或处理建议:

1xx — 信息性(很少直接用于浏览器交互)

  • 100 Continue:客户端应继续其请求(常用于分块/大体请求)。
  • 101 Switching Protocols:服务器同意切换协议(如升级到 WebSocket)。
  • 102 Processing(WebDAV):服务器收到并在处理,但尚无响应结果。

2xx — 成功

  • 200 OK:请求成功,返回所请求的资源(最常见)。
  • 201 Created:已创建资源(常见于 POST 创建新对象)。
  • 202 Accepted:已接受请求,但尚未处理完成(异步任务)。
  • 204 No Content:请求成功但无返回内容(常用于删除或无视图更新)。

3xx — 重定向

  • 301 Moved Permanently:永久重定向,搜索引擎应更新链接到新 URL。
  • 302 Found(或 Temporarily Redirect):临时重定向,客户端应继续使用原 URL。
  • 303 See Other:对 POST-redirect-GET 常用,指向另一个 URL 用 GET 获取资源。
  • 307 Temporary Redirect:临时重定向,HTTP 方法不应改变(与 302 的更严格语义)。
  • 308 Permanent Redirect:永久重定向且方法不应改变(类似 301 的严格版本)。

4xx — 客户端错误

  • 400 Bad Request:请求语法错误或参数不合法。
  • 401 Unauthorized:未认证或认证失败(需要登录/提供凭证)。
  • 403 Forbidden:已认证但无权限访问(禁止访问)。
  • 404 Not Found:请求的资源不存在(常见)。
  • 405 Method Not Allowed:请求方法不被允许(如用 POST 请求一个只接受 GET 的接口)。
  • 406 Not Acceptable:请求的内容协商失败(客户端 Accept 无法满足)。
  • 408 Request Timeout:请求超时(客户端未及时发送完整请求)。
  • 409 Conflict:资源冲突(如版本冲突或重复创建)。
  • 410 Gone:资源已永久移除且无替代地址(与 404 不同,表示永久删除)。
  • 415 Unsupported Media Type:请求体媒体类型不被支持(如发送了服务器不识别的 Content-Type)。
  • 429 Too Many Requests:请求过多,通常配合重试-延迟或限流策略(Rate limiting)。

5xx — 服务器错误

  • 500 Internal Server Error:服务器内部错误(通用错误,需后台排查)。
  • 501 Not Implemented:服务器不支持所请求的功能(未实现)。
  • 502 Bad Gateway:作为网关或代理时,从上游服务器收到无效响应(常见于反向代理/负载均衡)。
  • 503 Service Unavailable:服务不可用(服务器过载或维护),常配合 Retry-After 头。
  • 504 Gateway Timeout:作为网关或代理时,上游服务器超时未响应。
  • 505 HTTP Version Not Supported:服务器不支持请求使用的 HTTP 版本.

实用建议(快速参考)

  • API 设计:成功操作用 2xx;创建资源用 201 并返回 Location;验证错误用 4xx(如 400/401/403/404/409);服务器异常用 5xx。
  • 重定向:对永久变更用 301/308;临时用 302/307/303(根据是否改变方法选择)。
  • 限流与重试:收到 429/503 可使用 Retry-After 头引导客户端重试间隔。
  • 调试:500/502/504 常伴随后端或网络问题,查看服务器日志与上游依赖。