中 基础
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 可能是服务端权限配置