面试知识库
基础

HTTP状态码#

一句话答案#

核心状态码:200 成功 / 301 永久重定向 / 302 临时重定向 / 304 缓存未变 / 400 请求错误 / 404 未找到 / 500 服务器错误。

核心要点

1xx — 信息性(处理中)

  • 100 Continue:客户端可以继续发送请求体

2xx — 成功

  • 200 OK:请求成功
  • 201 Created:资源创建成功(POST)
  • 204 No Content:成功但无响应体(DELETE)

3xx — 重定向

  • 301 Moved Permanently:永久重定向(浏览器会缓存新地址)
  • 302 Found:临时重定向(不缓存)
  • 304 Not Modified:资源未修改,使用缓存(配合 If-Modified-Since / ETag)

4xx — 客户端错误

  • 400 Bad Request:请求参数错误/格式不对
  • 401 Unauthorized:未认证(需要登录)
  • 403 Forbidden:已认证但无权限
  • 404 Not Found:资源不存在
  • 405 Method Not Allowed:HTTP 方法不支持
  • 429 Too Many Requests:限流(请求过于频繁)

5xx — 服务端错误

  • 500 Internal Server Error:服务器内部错误(通用)
  • 502 Bad Gateway:网关错误(上游服务无响应)
  • 503 Service Unavailable:服务不可用(过载或维护)
  • 504 Gateway Timeout:网关超时(上游服务响应超时)
面试回答(2分钟版)

HTTP状态码按百位数分为五类:1xx表示处理中,2xx表示成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务端错误。高频的几个我重点说一下:200是请求成功,201是资源创建成功常用于POST,204是成功但无响应体常用于DELETE。重定向方面,301是永久重定向浏览器会缓存新地址,302是临时重定向不缓存,304表示资源未修改可以继续用本地缓存,它配合If-Modified-Since或ETag来实现。客户端错误中,400是请求参数有问题,401是未认证需要登录,403是已认证但没有权限,404是资源不存在,429是触发了限流。服务端错误中,500是通用的服务器内部错误,502是网关发现上游服务无响应,504是网关等上游响应超时。在实际开发中,接口设计要规范地使用状态码,比如RESTful API中创建资源返回201而不是200,这样语义更清晰。

追问与易错

追问方向:

  • “301 和 302 区别?什么场景用哪个?”→ 301 永久重定向浏览器会缓存新地址(域名迁移),302 临时重定向不缓存(临时跳转/登录跳转)
  • “304 是怎么实现的?”→ 浏览器携带 If-Modified-Since 或 If-None-Match 请求头,服务端比较后资源未变返回 304,浏览器用本地缓存
  • “502 和 504 区别?”→ 502 Bad Gateway 是网关联系上游但收到无效响应(上游崩溃),504 Gateway Timeout 是网关等上游响应超时(上游卡住)

易错点:

  • ❌ 200 就是成功——还有 201(Created) 204(No Content)
  • ❌ 4xx 都是客户端错误——403 可能是服务端权限配置