HTTP 状态码

Web 工具

速查 HTTP 状态码含义与使用场景,覆盖 1xx 至 5xx 各类响应并附解决示例。完整覆盖 1xx 至 5xx,并给出每个状态码的典型触发场景与排查方向。特别区分 301 与 302、401 与 403、502 与 504 等易混组合。每条都附常见触发原因与排查建议。按 1xx 到 5xx 分类便于检索。

27 个状态码
100信息
Continue
服务器已接收请求头;客户端应继续发送请求体。
101信息
Switching Protocols
服务器正在按 Upgrade 头的请求切换协议。
200成功
OK
HTTP 请求成功的标准响应。
201成功
Created
请求已完成,创建了新资源。
202成功
Accepted
请求已接受,但尚未处理完成。
204成功
No Content
服务器已处理请求,无内容返回。
206成功
Partial Content
服务器仅返回资源的一部分(范围请求)。
301重定向
Moved Permanently
资源已永久移动到新的 URL。
302重定向
Found
资源临时位于另一个 URL。
304重定向
Not Modified
资源自上次请求后未修改(缓存命中)。
307重定向
Temporary Redirect
类似 302,但请求方法不能变。
308重定向
Permanent Redirect
类似 301,但请求方法不能变。
400客户端错误
Bad Request
客户端错误导致服务器无法处理请求(语法错误)。
401客户端错误
Unauthorized
需要身份验证,验证失败或未提供。
403客户端错误
Forbidden
服务器已理解请求,但拒绝授权。
404客户端错误
Not Found
请求的资源未找到。
405客户端错误
Method Not Allowed
目标资源不支持该请求方法。
408客户端错误
Request Timeout
服务器等待请求超时。
409客户端错误
Conflict
请求与服务器当前状态冲突。
410客户端错误
Gone
资源不再可用,且将永久不可用。
418客户端错误
I'm a teapot
服务器拒绝煮咖啡,因为它是一个茶壶。(RFC 2324)
422客户端错误
Unprocessable Entity
请求格式正确,但无法处理(语义错误)。
429客户端错误
Too Many Requests
用户在限定时间内发送了过多请求(限流)。
500服务端错误
Internal Server Error
通用服务器错误,无更具体的描述。
502服务端错误
Bad Gateway
作为网关的服务器从上游收到了无效响应。
503服务端错误
Service Unavailable
服务器暂时无法处理请求(过载或停机维护)。
504服务端错误
Gateway Timeout
上游服务器未在规定时间内响应。

关于 HTTP 状态码

HTTP 状态码是服务器对每个请求给出的三位数字结果,按首位分为五类:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误。本工具内置完整的状态码字典,输入 404、301、429 等代码即可查到标准名称、含义、所属类别及常见使用场景,也支持按关键词搜索(如"重定向""未授权")。所有处理均在浏览器本地完成,无需安装任何软件,它适合在排查接口返回、调试重定向链条或向同事解释 4xx/5xx 含义时快速查码。排查接口问题时先看状态码所属类别,能迅速判断该改客户端请求还是去查服务端日志;重定向链条尤其适合逐跳核对,配合浏览器开发者工具的网络面板,可以定位是哪一跳把请求带偏或造成了多余的往返,减少无谓的猜测。

状态码的第一位决定了响应的大类,理解这层分类比记住具体数字更实用。信息类表示请求已收到但尚未完成,成功类表示请求被正确处理,重定向类要求客户端再发起一次请求到别处,客户端错误表示请求本身有问题,服务端错误表示请求没问题但服务端处理失败。因此看到不熟悉的码,先看第一位就能判断该由谁去修。

把错误放在成功码里返回是最常见的误用,会破坏所有依赖状态码的上游逻辑。部分接口在业务失败时仍返回成功码,再在响应体里放一个错误标记,这会让监控、缓存与重试策略全部失效,因为它们只看状态码。因此正确的做法是用与语义一致的状态码表达结果,把细节放在响应体里。

临时与永久跳转的选择会影响客户端与搜索引擎的行为,混淆会带来长期问题。永久跳转会被浏览器与搜索引擎长期缓存,一旦配置错误,即使后来改回正确地址,客户端仍可能继续访问旧目标;而临时跳转不产生这种缓存。因此在本意是临时调整时应当使用临时跳转,避免留下难以撤销的缓存。

网关相关的错误码能快速区分故障位置,这在排查线上问题时很有价值。这类码通常在请求经过了网关但上游未能及时响应或响应异常时出现,因此看到它就说明问题出在网关之后而不是客户端;反之,客户端错误码说明请求根本没有到达业务逻辑。理解这一点能把排查范围立刻缩小一半。

缓存相关的码在语义上有严格区别,误用会造成用户看到过期内容。有的码要求客户端在后续请求中带上条件重新验证,有的只是表示内容未改变而无需重传,还有的用于明确指示资源已永久移除。因此在配置缓存与资源下线时应当按语义选择,而不是统一用同一个码应付。

最后,状态码与响应体的结构应当保持一致,这样客户端才能用统一逻辑处理。若一部分接口在错误时返回结构化字段,另一部分返回纯文本,客户端就需要针对每个接口单独写解析,容易遗漏。因此约定一份统一的错误结构并与状态码配套使用,是接口设计里成本很低但收益明显的规范。

实现原理

状态码按首位分五类,含义是「请求处理到了哪一步」:信息、成功、重定向、客户端错误、服务端错误。最重要的区分是传输层与业务层——把业务失败返回成功状态码会让客户端只能解析响应体判断,也让监控失去可靠信号。此外永久与临时重定向不可混用,前者会被长期缓存。

输入资源不存在时返回 200 并在响应体写 {ok:false}
输出监控看不到错误率、缓存可能缓存「失败」、客户端必须解析响应体——应返回 404

使用方法

  1. 打开「HTTP 状态码」
  2. 输入或粘贴待处理的内容
  3. 根据需要调整输出选项
  4. 点击「运行」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • 调试 API 返回 — 收到 422、409 时快速确认语义,判断是客户端数据问题还是冲突。
  • 配置重定向 — 区分 301 永久与 302 临时重定向,避免误用影响 SEO 权重转移。
  • 限流设计 — 为接口选择 429 Too Many Requests 并搭配 Retry-After 头。
  • 编写错误处理 — 在前端按 4xx/5xx 分类决定是否重试或提示用户。
  • 面试与学习 — 系统记忆各状态码的标准定义与适用边界。

常见问题

301 和 308 有什么区别?

两者都是永久重定向,但 301 在重定向时浏览器可能把 POST 改为 GET,而 308 严格保留原始请求方法和请求体,涉及表单提交时应优先用 308。

401 和 403 怎么区分?

401 Unauthorized 表示未认证(缺少或无效凭证,应去登录);403 Forbidden 表示已认证但无权限,再提供凭证也没用。措辞虽叫 Unauthorized,实指未认证。

什么时候该返回 404 而不是 200?

资源不存在应返回 404,让搜索引擎和客户端正确处理。用 200 返回"未找到"页面会造成软 404,影响收录并误导调用方。

418 状态码是真的吗?

418 I'm a teapot 源自愚人节 RFC 2324 的玩笑,并非正式标准,但很多框架保留了它;生产环境不应依赖它表达业务语义。

502、503、504 分别意味着什么?

502 是网关从上游收到无效响应,503 是服务暂时不可用(常见于过载或维护),504 是网关等待上游超时,排查时应分别检查上游服务与超时配置。

接口返回 200 但业务上其实失败了,这是不是错误的状态码用法?

是的,这属于把传输层成功与业务层结果混为一谈。资源不存在应返回 404,参数不合法应返回 400 或 422,未认证与无权限分别对应 401 与 403。全都返回 200 会让客户端无法通过状态码分流,只能解析响应体判断,也让监控与告警失去可靠信号,长期看会显著抬高维护成本。

302 与 301 选错了会有什么后果?

301 表示永久移动,浏览器与中间层会长期缓存这个跳转,之后即便改回原地址也可能仍被带走;302 表示临时移动,不会被长期缓存。把临时跳转写成 301 是常见的运维事故,尤其在灰度切换与域名迁移期间。短时间内可能调整的跳转一律用临时状态码,确定永久后再改为永久。

301 和 302 在 SEO 上到底有什么区别?

301 告诉搜索引擎「永久搬家」,权重会传递到新地址;302 表示「临时借道」,搜索引擎会继续索引旧地址。把永久跳转错写成 302 是常见失误,会导致新页面迟迟不被收录、旧页面一直占着排名。

广告