欢迎光临
我们一直在努力

看到 502 就头大?这份 HTTP 状态码速查表,我用了三年

前几天,半夜被拉进一个群。值班的朋友发来一张截图:“接口一直报 502,我是不是该重启服务器了?”

我问他:"网关日志看了吗?"他说:“看不懂,502 不就是服务器挂了吗?”

说实话,这段对话让我想起几年前的自己。那时候我只认识三个状态码:200、404、500。遇到别的,就复制下来去搜,搜完还是一头雾水:301 和 302 到底啥区别?401 和 403 不是一回事吗?502 和 504 是不是写错了?

后来实在受不了这种到处搜的日子,干脆把 HTTP 状态码系统整理成了一份速查表。这篇文章把整理结果分享给你,看完之后,遇到任何报错码都能一眼定位方向。

为什么要专门记状态码?

HTTP 官方注册的状态码有 60 多个,其中 90% 你这辈子可能都见不到。但剩下那十几个,会在日常开发里反复出现。不认识它们的代价很真实:

🔴 排查方向跑偏 502 是网关问题,你去重启应用服务器,折腾一小时发现问题还在。

🔴 相似码混淆 401 和 403 看着像,处理方式完全不同,搞混了就是白干。

🔴 前后端扯皮 4xx 是客户端的问题,5xx 是服务端的问题。知道码属于哪一类,一秒定位该找谁。

好消息是:状态码的规律性非常强,记住第一位数字就够了。

一分钟记住五大类

第一位数字决定分类,这是全文最重要的一条规则:

类别名称含义一句话记忆
1xx 信息响应 请求已接收,正在处理 “先等着,还没完”
2xx 成功 请求被成功处理 “成了,没毛病”
3xx 重定向 需要再操作一步才能完成 “这里没有,跟我走”
4xx 客户端错误 请求本身有问题 “你的锅”
5xx 服务端错误 服务器处理不了 “服务器的锅”

记忆口诀:1 等 2 成 3 跳转,4 是你是 5 是它。

以后排查问题,先看第一位数字:

  • 看到 4xx → 先查请求方:参数、认证、路径对不对
  • 看到 5xx → 去查服务端:日志、资源、依赖服务
  • 看到 3xx → 检查跳转配置:目标地址配得对不对

常用状态码速查

下面这些是工作中真正会遇到的码,按出场频率整理。

1xx 信息类:少见,但认识一下

代码英文名含义常见场景
100 Continue 继续发送请求体 大文件上传前的"先问一嘴"
101 Switching Protocols 切换协议 WebSocket 升级

2xx 成功类:看到就安心

代码英文名含义常见场景
200 OK 请求成功 绝大多数正常响应
201 Created 资源创建成功 REST API 的 POST 创建成功
204 No Content 成功,但没有返回体 DELETE 成功、纯状态更新

3xx 重定向类:最容易踩坑的一类

代码英文名含义常见场景
301 Moved Permanently 永久迁移,搜索引擎会更新索引 域名更换、HTTP 换 HTTPS
302 Found 临时跳转,原地址仍然有效 A/B 测试、临时活动页
304 Not Modified 缓存命中,直接用本地副本 静态资源加速、省带宽
307 Temporary Redirect 临时跳转,保持原请求方法 需要保留 POST 的跳转
308 Permanent Redirect 永久跳转,保持原请求方法 POST 接口的永久迁移

4xx 客户端错误类:先检查自己

代码英文名含义常见场景
400 Bad Request 请求参数或格式有问题 JSON 格式错、缺参数
401 Unauthorized 没登录或身份凭证无效 token 缺失、过期
403 Forbidden 登录了,但没权限 普通用户访问管理页
404 Not Found 资源不存在 路径写错、资源已删
405 Method Not Allowed 请求方法不支持 对只读接口发 POST
408 Request Timeout 请求超时 网络慢、客户端发送太慢
413 Payload Too Large 请求体太大 上传文件超限
429 Too Many Requests 请求太频繁,被限流 爬虫太快、触发 API 限流

5xx 服务端错误类:值班人的噩梦

代码英文名含义常见场景
500 Internal Server Error 服务器内部错误,兜底码 未捕获异常、代码 bug
501 Not Implemented 功能未实现 服务器不支持该方法
502 Bad Gateway 网关从上游收到了无效响应 后端挂了、上游返回异常
503 Service Unavailable 服务暂时不可用 过载、正在发布
504 Gateway Timeout 网关等上游响应超时 后端处理太慢、慢查询

最容易搞混的三对

301 vs 302:永久 vs 临时

对比项301 永久重定向302 临时重定向
SEO 影响 搜索引擎收录新地址 搜索引擎保留原地址
浏览器缓存 会被强缓存,改起来麻烦 默认不缓存
适用场景 域名迁移、HTTP 转 HTTPS 临时跳转、A/B 测试

⚠️ 踩坑提醒:301 用错地方会被浏览器缓存,之后就算服务端改回来,用户浏览器照样跳到错误地址。测试时一定要清缓存。

401 vs 403:没登录 vs 不让进

  • 401:“你是谁?”——没有认证或 token 失效。处理:重新登录、刷新 token。
  • 403:“我知道你是谁,但你不能进。”——认证通过了,权限不够。处理:检查角色和权限配置。

502 vs 504:后端挂了 vs 后端太慢

对比项502 Bad Gateway504 Gateway Timeout
含义 上游返回无效响应或直接拒绝连接 上游在规定时间内没响应
常见原因 后端进程挂了、端口没监听 后端处理太慢、慢查询
排查方向 后端进程活着吗?端口通吗? 后端日志、慢查询、超时配置

一句话记忆:502 是"人没了",504 是"人还在,但太慢了"。

实战排查:我的三板斧

平时遇到问题,我会先用 curl 看第一手响应,比盯着浏览器的报错页面直接得多:

# 只看响应头和状态码
curl -I https://example.com/api

# 只输出状态码,方便写进脚本
curl -s -o /dev/null -w "%{http_code}\\n" https://example.com/api

排查三步走:

  • 看第一位数字,定方向(4xx 查客户端,5xx 查服务端)
  • 看响应体,找具体报错信息
  • 拿不准的码,马上查速查表,别猜
  • 说到查码,分享一个习惯:遇到不认识的状态码,别一篇一篇翻搜索出来的博客,结果里经常混着过时信息。我现在是直接打开在线速查表搜,比如我收藏的这个 HTTP 状态码速查表,输入状态码数字或者"未找到"这类关键词就能实时过滤,点一下状态码还能直接复制,贴到日志和文档里很方便。1xx 到 5xx 全覆盖,中英文解释都有,平时想不起来就查一下,不用硬背。

    常见问题

    Q:需要把 60 多个状态码全背下来吗? A:不需要。上面速查表里的 20 多个覆盖了 99% 的场景。像 418(I’m a teapot)这种是愚人节玩笑 RFC 里的,见到了知道有这么回事就行。

    Q:Nginx 里的 499、Cloudflare 的 520 是什么? A:这些是厂商扩展码,不是官方标准。499 在 Nginx 里表示"客户端主动断开连接",520~529 是 Cloudflare 自家的错误码。遇到再学,不用提前背。

    Q:接口出错了,返回 200 再在 JSON 里写错误码行不行? A:不建议。HTTP 状态码是给机器看的标准语义,一律返回 200 会让网关、缓存、监控全部失效。出错了就返回对应的 4xx/5xx,详细信息放响应体里。

    Q:302 和 307 都是临时重定向,区别在哪? A:历史上 302 会被浏览器把 POST 改成 GET,307 明确要求保持原请求方法。现代浏览器里 GET 场景两者基本一致,需要重定向 POST 请求时用 307 更稳。

    总结

    HTTP 状态码是客户端和服务器之间的通用语言,学会这门语言是开发者性价比最高的投入之一:

    ✅ 记住口诀:1 等 2 成 3 跳转,4 是你是 5 是它 ✅ 掌握 20+ 常用码,覆盖 99% 的场景 ✅ 分清三对易混码:301/302、401/403、502/504 ✅ 4xx 查客户端,5xx 查服务端,一秒定责 ✅ 记不住就查速查表,别猜,也别硬背

    下次再遇到报错码,不用慌,看一眼就知道问题在哪。

    参考资料

    • RFC 9110 HTTP Semantics(状态码的官方定义)
    • MDN Web Docs:HTTP 状态码
    • IANA HTTP Status Code Registry(官方注册表)
    • HTTP 状态码速查表:https://leowh.com/tools/http-status/index.html
    赞(0)
    未经允许不得转载:171主机测评 » 看到 502 就头大?这份 HTTP 状态码速查表,我用了三年
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址