跳到内容

📡 HTTP 状态码查询

按代码号或关键词即时搜索 HTTP 状态码 (1xx~5xx)。简明扼要地解释各代码的含义、常见原因和解决方法。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式

📖 常见的坑

这是一份可按代码号或关键词检索的清单。它无法告诉你自己的站点实际返回了哪个代码——那是 HTTP 标头检查重定向链诊断的职责。需要牢记的是:状态码分类的是「发生了什么」,而非「谁的责任」。4xx 与 5xx 的划分只是起点;实际上不少应用会吞掉服务器错误,照样返回 200。

情形 会发生什么 怎么处理
本以为返回 404,实际是 200 页面看起来是错误页,却带着 200 返回。谷歌称之为软 404,并在 Search Console 中给出警告。仅在客户端解析路由的 SPA,以及用模板渲染「无结果」页面的 CMS,最常出现这种情况。 务必让状态行与正文内容一致。不存在的 URL 返回 404,永久删除的返回 410,维护期间返回带 Retry-After503。即便是 SPA,服务器也能判断路由是否存在,至少把状态行返回正确。请用 curl -IHTTP 标头检查确认——只看浏览器渲染结果是看不出来的
混淆 401 与 403 401 表示「不知道你是谁」,403 表示「知道你是谁,但仍不允许」。Unauthorized 与 Forbidden 这两个名字看起来正好相反,但 401 关乎认证,403 关乎授权。已登录用户去访问他人资源时,正确的是 403;若返回 401,客户端会再次提示登录,尽管凭据本身没有问题。 返回 401 时务必附带 WWW-Authenticate 标头——规范要求如此,缺少它的 401 严格来说是不合法的。若出于安全考虑需要连资源是否存在都隐藏,惯例是返回 404 而非 403,以免泄露存在性;管理后台 URL、他人的订单 ID 等都属于此类。
收到 429 后立刻重试 触发限流后立刻原样重发,会延长封禁时间,最终导致整个 IP 被切断。多个客户端同步重试还会引发惊群效应:窗口一开放,所有请求同时涌入。对 5xx 无条件重试同理——只会给已经故障的服务器雪上加霜。 只要存在 Retry-After 标头就必须遵守(其中是秒数或 HTTP 日期)。若没有,请使用带抖动的指数退避:1s → 2s → 4s → 8s,各自再乘以约 ±50% 的随机因子。不加抖动,同时失败的客户端就会一直同时重试。可以重试的只有 408 / 429 / 500 / 502 / 503 / 504;400 或 422 说明输入本身有误,重试多少次结果都一样。

3xx 会被浏览器强力缓存。尤其是 301,它自称「永久」,许多浏览器会毫无过期时间地记住它,因此即使在服务器端回滚,用户本地仍会继续跳转。测试期间误发一次 301,受影响的用户在清除缓存之前都回不来。在配置尚未定型前请使用 302307,确有把握后再切换到 301 / 308。这是重定向配置中最难挽回的失误之一。

📖 使用方法

  1. 1
    按代码号或关键词搜索
    既可用 404 这样的数字,也可用 redirect、forbidden 这类词检索
  2. 2
    阅读含义与常见原因
    先按「4xx 属请求侧、5xx 属服务器侧」区分,最能快速缩小范围
  3. 3
    把处理建议与实际响应头对照
    Location / Retry-After / ETag 等可用 HTTP 标头检查查看实际值

❓ 常见问题

404 与 410 该如何区分?
410 声明资源曾经存在但已被永久删除。谷歌处理 410 的移除速度快于 404,因此若有可能恢复该页面,请仍用 404。
502 与 504 有何不同?
两者都是代理报告上游异常:502 表示响应损坏或连接失败,504 表示在规定时间内什么都没收到。遇到 502 先看上游进程是否存活,遇到 504 先看超时设置与慢查询。
什么时候该用 308 而非 301?
当迁移接收 POST 的端点时。301 与 302 允许浏览器把 POST 改成 GET,导致请求到达时正文已丢失;请使用保留方法的 308(永久)与 307(临时)。
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送