HTTP 4xx 和 5xx 状态码排查方向:客户端错误与服务端错误怎么区分

HTTP 状态码速查:4xx 表示客户端错误,5xx 表示服务端错误。排查时先按区间判断责任方,再区分易混状态码:500 是内部错误,503 是服务不可用;401 需要认证,403 禁止访问;301 永久重定向,302 临时重定向。本文给出 4xx 与 5xx 常见状态码的排查方向、分步操作和常见问题。

管 · · 3 分钟 · 564 浏览 · 16 个小节
目录
  1. 先分清 4xx 和 5xx 的责任边界
  2. 3xx 也容易搞混,顺带记住
  3. 4xx 常见状态码与排查方向
  4. 400 Bad Request
  5. 401 Unauthorized
  6. 403 Forbidden
  7. 404 Not Found
  8. 其他 4xx
  9. 5xx 常见状态码与排查方向
  10. 500 Internal Server Error
  11. 502 Bad Gateway
  12. 503 Service Unavailable
  13. 504 Gateway Timeout
  14. 分步排查操作
  15. 适用与不适用场景
  16. 常见问题

4xx 状态码表示请求本身有问题,责任在客户端,服务端拒绝或无法处理这次请求;5xx 状态码表示服务端在处理请求时出错,责任在服务端。排查时先看状态码落在哪个区间,能直接决定你该查前端、查配置,还是查后端服务与依赖。把 500 和 503 混为一谈,或者把 403 当成 401 处理,都会让排查方向完全跑偏。

先分清 4xx 和 5xx 的责任边界

HTTP 状态码按首位数字分五类。与排查最相关的是:

  • 2xx:请求成功,通常不需要排查。
  • 3xx:重定向,重点看 301 与 302 的区别。
  • 4xx:客户端错误,问题多出在请求的 URL、参数、认证信息或权限上。
  • 5xx:服务端错误,问题多出在后端代码、服务状态或依赖组件上。

你遇到报错时,第一步不是重启服务,而是确认状态码属于哪一类。方向对了,后面才不是瞎折腾。

3xx 也容易搞混,顺带记住

301 是永久重定向,302 是临时重定向。两者搞反,会影响搜索引擎收录,进而影响流量。排查重定向问题时,先确认这个跳转是长期还是临时的。

4xx 常见状态码与排查方向

400 Bad Request

请求格式有问题,服务端无法解析。排查方向:检查请求体格式是否符合接口要求,参数名与类型是否匹配,请求头是否缺失或写错。

401 Unauthorized

需要身份认证。排查方向:确认是否携带了认证凭证,凭证是否过期或格式错误,认证头是否被正确附加到请求上。

403 Forbidden

禁止访问。注意,401 是要求你登录,403 是即使登录了也没有权限。把 403 当成 401 处理,用户会陷入反复登录却始终进不去的死循环。排查方向:检查账号权限、访问控制规则、资源是否被显式拒绝。

404 Not Found

资源不存在。排查方向:检查 URL 是否拼写正确,路径中是否多写或少写了斜杠,路由配置是否与实际请求路径一致。一个多余的斜杠就可能导致 404,这类问题不需要改后端代码。

其他 4xx

  • 405:请求方法不被允许,检查是否用了 GET 去请求只接受 POST 的接口。
  • 408:请求超时,检查客户端网络或请求耗时。
  • 429:请求过于频繁,检查是否触发了限流。

5xx 常见状态码与排查方向

500 Internal Server Error

服务器内部错误,通常意味着代码逻辑出问题。排查方向:查看服务端日志中的异常堆栈,定位到具体代码位置,而不是先重启服务或清缓存。

502 Bad Gateway

网关或代理从上游服务收到了无效响应。排查方向:检查上游服务是否存活、端口是否正确、代理配置是否指向了正确的后端地址。

503 Service Unavailable

服务不可用,常见原因是过载或正在维护。排查方向:检查服务负载、连接池配置、是否处于发布或维护窗口。数据库连接池配置错误就可能导致 503,而不是 500。

504 Gateway Timeout

网关等待上游服务响应超时。排查方向:检查上游服务处理耗时、网络延迟、超时阈值设置是否合理。

分步排查操作

  1. 记录完整状态码与请求信息。不要只看一个数字,同时记录请求方法、URL、请求头、请求体。
  2. 判断区间。4xx 查客户端侧,5xx 查服务端侧。
  3. 4xx 优先检查 URL、参数、认证与权限。确认请求是否按接口文档构造。
  4. 5xx 优先查看服务端日志与依赖状态。确认异常堆栈、上游服务是否可用、连接池与超时配置是否正确。
  5. 区分易混状态码。500 与 503、401 与 403、301 与 302,先确认语义再动手改。
  6. 复现并验证。用相同请求复现问题,修改后再次确认状态码是否恢复为 2xx。

适用与不适用场景

这套按区间排查的方法适用于后端接口调试、线上故障定位、前后端联调等场景。它的前提是你能拿到真实的状态码。如果状态码被中间层改写、被前端统一拦截成固定提示,或者你看到的是自定义业务码而非 HTTP 状态码,就需要先找到原始响应,再按上述方向判断。

常见问题

500 和 503 有什么区别?\n500 是服务器内部错误,通常是代码逻辑问题;503 是服务不可用,常见于过载或维护中。排查方向不同,不能混为一谈。

401 和 403 怎么区分?\n401 表示需要认证,403 表示已认证但无权访问。把 403 当 401 处理,用户会反复登录却始终进不去。

301 和 302 搞反了会怎样?\n301 是永久重定向,302 是临时重定向。搞反会影响搜索引擎收录,进而影响流量。

404 一定是资源真的不存在吗?\n不一定。URL 拼写错误、路径多写或少写斜杠、路由配置不一致,都会返回 404。先检查请求路径,再怀疑资源本身。

排查 5xx 应该先做什么?\n先看服务端日志和异常堆栈,确认具体错误,再检查依赖服务与连接池、超时等配置,而不是直接重启服务。

更多文章
564 浏览 ·

更多在线工具等你发现

免费使用文字处理、PDF 工具、AI 写作等实用功能