常见 HTTP 状态码含义详解
常见 HTTP 状态码含义详解
一、状态码的作用
浏览器每次访问网站,服务器响应都会带一个三位数字状态码,用来告诉客户端这次请求的结果。排查前端报错、接口联调、Nginx 反代问题时,第一步就是看状态码。状态码按首位分五大类:2 开头成功,3 开头重定向,4 开头客户端错误,5 开头服务端错误,熟练记住常用码能快速定位问题。
二、2xx 成功
- 200 OK:请求成功,正常返回内容;
- 201 Created:资源创建成功,常用于 POST 提交新增数据;
- 204 No Content:成功但无返回体,PUT、DELETE 常用。
三、3xx 重定向
- 301 Moved Permanently:永久重定向,搜索引擎会迁移权重,域名更换、http 跳 https 常用;
- 302 Found:临时重定向,不转移权重;
- 304 Not Modified:资源未修改,浏览器用本地缓存,配合 ETag、Last-Modified,不重复下载。
四、4xx 客户端错误
- 400 Bad Request:请求参数格式错误,后端解析失败;
- 401 Unauthorized:未认证,缺少或凭证错误,需要登录;
- 403 Forbidden:已认证但无权限,或服务器拒绝访问(目录无权限、IP 被拦);
- 404 Not Found:资源不存在,路由错误或文件被删;
- 405 Method Not Allowed:请求方法不允许,如接口只接受 GET 却用 POST;
- 413 Payload Too Large:上传文件超过服务器限制;
- 429 Too Many Requests:请求过于频繁,被限流。
五、5xx 服务端错误
- 500 Internal Server Error:服务器内部错误,代码异常、PHP 致命报错;
- 502 Bad Gateway:反向代理收到后端无效响应,后端挂了或端口不通;
- 503 Service Unavailable:服务暂时不可用,过载或维护中;
- 504 Gateway Timeout:网关等待后端响应超时,后端处理太慢;
- 500 与 502 区别:500 是后端自己报错,502/504 是代理连不上或等不到后端。
六、调试思路
前端看到异常先看状态码:4xx 一般是请求参数、权限、地址问题,改前端;5xx 是后端或服务器问题,查服务日志。配合浏览器 Network 面板看请求 URL、响应头和返回体,比只看页面白屏高效得多。
七、常见误区
- 把 403 当 404,其实是权限拒绝,不是找不到;
- 301 和 302 混用,301 会被浏览器长期缓存,改不回来;
- 502 只盯后端代码,忽略 Nginx 到后端的网络和端口;
- 401 和 403 分不清,401 是没登录,403 是登录了也不让进。
八、总结
记住 200/301/304/400/401/403/404/405/413/429/500/502/503/504 这十几个高频码,就能覆盖绝大多数排障场景。状态码是客户端和服务器沟通的语言,看懂它,前后端联调和线上故障定位都会快很多。