5月27日 01:10
HTTP 有哪些常用的状态码?
按分类记:
2xx 成功:
200 OK:请求成功201 Created:创建资源成功(POST 返回)204 No Content:成功但无响应体(DELETE 后常见)
3xx 重定向:
301 Moved Permanently:永久重定向(浏览器会缓存,下次直接跳)302 Found:临时重定向304 Not Modified:资源未修改,用缓存(配合 If-Modified-Since/ETag)307/308:和 301/302 类似,但 POST 转 GET 行为不同
4xx 客户端错误:
400 Bad Request:请求格式错误401 Unauthorized:未认证403 Forbidden:已认证但无权限404 Not Found:资源不存在405 Method Not Allowed:方法不对(比如用 GET 调了 POST 接口)429 Too Many Requests:被限流
5xx 服务端错误:
500 Internal Server Error:服务端内部错误502 Bad Gateway:网关/代理收到无效上游响应503 Service Unavailable:服务暂不可用(维护/过载)504 Gateway Timeout:网关超时
追问
301 和 302 的区别?
301 是永久的——浏览器会缓存重定向目标,之后相同 URL 直接跳转,不用再请求原地址。SEO 权重转移。302 是临时的——每次都会请求原地址再跳转。语义不同,对 SEO 和缓存影响很大。
401 和 403 怎么区分?
401 是"你是谁?"——没登录或 token 过期,需要你去认证。403 是"我知道你是谁,但不让你看"——认证通过了但权限不够。
502 和 504 的区别?
502 是网关从上游收到了无效/不完整的响应(服务崩溃、配置错误)。504 是网关在规定时间内没等到上游响应(超时)。排查方向:502 看服务有没有挂,504 看服务是不是太慢。