HTTP 状态码速查
按 1xx 到 5xx 分类浏览 HTTP 状态码,可搜码、英文名、中文含义或排查办法,点开任意一条看它什么时候出现、常见原因与处理顺序,并收录 nginx、Cloudflare、阿里云等非官方码并单独标注。
| 码 | 名称 | 含义 |
|---|
点表格里任意一行看详情
详情会写这个码什么时候出现、常见原因和排查顺序。官方注册码以外的常见网关与云厂商自定义码都标了「非官方」,别当成标准语义用。
先看前一位数字
<code>2xx</code> 是成功、<code>3xx</code> 重定向、<code>4xx</code> 是请求本身有问题、<code>5xx</code> 是服务端自己出问题。分诊时先落到这一层,再看具体码。
只有一位数的 <code>1xx</code> 是中间响应,浏览器一般自己处理掉,你在开发者工具里很少直接看到。
最容易误判的几个
<code>304</code> 不是错误:带了缓存校验头(<code>If-None-Match</code> / <code>If-Modified-Since</code>)的请求命中缓存就返回它,响应体是空的。
<code>401</code> 的字面意思是「未认证」,<code>403</code> 才是「已认证但不允许」;<code>422</code> 表示能解析但内容不合校验规则,<code>400</code> 更偏语法层面出错。
301 与 308 的区别
浏览器和客户端在跟随 301 时可能把 POST 改成 GET,body 丢掉;308 明确要求保持方法与请求体。
所以整站跳 HTTPS 必须用 308,API 的临时跳转用 307 —— 这两个码就是为「不改变请求」而设的。
非官方码从哪来
网关、反向代理和云平台会自己定义码:nginx 的 499、Cloudflare 的 52x、阿里云的 598/599、Safari 的 419。
它们不在 IANA 注册表里,含义只对对应厂商成立,遇到时先确认是哪一层返回的 —— 页面上的码往往来自网关而不是你的应用。
常见问题
表里收录了多少条?
见页面上的「表内总数」,数字按表里的实际条数算。官方注册码之外还收了常见网关与云厂商的自定义码,在筛选里选「非官方」单独看。
为什么 418 我会看到?
418 I'm a teapot 确实在注册表里,但标准用途只是彩蛋。业务上拿它表达「条件不满足」属于自定义语义,客户端不一定认。
能按响应头查吗?
不能,这一页是离线速查表。想知道某个响应头怎么配,得看对应的请求本身 —— 站点里有 HTTP 头解析工具可以贴一份响应头进来看。