HTTP 状态码参考

全球通用工具

HTTP 状态是服务器附在每个响应上的三位数答案,第一位就是故事:1xx 表示继续,2xx 表示成功,3xx 表示去别处看,4xx 表示请求无法被满足,5xx 表示服务器无法完成自己那部分。每一类里的代码指明具体情形——404 是“未找到”,429 是“慢一点”,503 是“服务器正赶上糟糕时刻”。把状态码弄对,是调试 API 的大部分工作,所以一页列出全部状态码并给出每个码该做什么的页面,值得占一个书签位。

类别从 1xx 到 5xx。在搜索框里输入会进一步收窄同一张表。

三位数代码精确匹配;`404` 匹配 404,`40x` 匹配每个 40x,`4xx` 匹配整个类别。其他任何词都会在名称、含义和“该检查什么”里做普通搜索。

留空使用 “status-codes.csv”。

边输入边更新。所有计算都在你的浏览器里完成,数据不会离开本机。

62 个状态码

HTTP 全部状态码

未搜索,显示整个类别。名称遵循 RFC 9110;“该检查什么”一行是每个状态码的实用下一步。

显示
62
表中总数
62
Classes
5

全部状态码

代码名称含义该检查什么
100Continue (1xx)服务器已读取请求头,客户端可以发送请求体。作为对 `Expect: 100-continue` 的回复发送;通常对用户不可见。
101Switching Protocols (1xx)服务器同意按客户端请求切换协议。当连接升级为长连接通道,或在 HTTP/2 上出现。
102Processing (1xx)服务器仍在处理,因此慢请求不会超时。一种 WebDAV 约定;多数服务器会跳过。
103Early Hints (1xx)在响应体仍在准备时,部分响应头先到达。服务器和 CDN 用它把 Link 提示(preload)在真正的 200 之前发出。
200OK (2xx)请求成功,响应携带请求所要的内容。最常见的代码;值得确认 Content-Type 与请求的内容一致。
201Created (2xx)请求创建了新资源,其位置在 Location 响应头里。查找指向新资源的 Location 响应头。
202Accepted (2xx)请求已被接受处理,但工作尚未完成。常见于队列;如果响应里有状态 URL,就轮询它。
203Non-Authoritative Information (2xx)回复来自副本,而不是源服务器。少见;代理和中间层在转换响应时使用。
204No Content (2xx)成功了,但没有内容要返回。DELETE 或保存的成功响应体;不要期待正文。
205Reset Content (2xx)类似 204,页面应清空发送请求的表单。少见;告诉浏览器重置当前文档。
206Partial Content (2xx)服务器发送了 Range 请求头所要求的那部分资源。出现在可续传下载和视频拖动中,带 Content-Range 响应头。
207Multi-Status (2xx)多个操作已执行,响应体报告每个操作的状态。WebDAV;读取响应体里逐项的状态。
226IM Used (2xx)服务器在发送响应前应用了实例操作。非常少见,与增量编码有关;几乎没人会看到。
300Multiple Choices (3xx)这个 URI 有多种表示,必须选择一种。今天很少见;客户端通常直接跟随第一个选择。
301Moved Permanently (3xx)资源有了新的永久 URI。检查 Location 中的目标;本应更新却没更新的旧 URL 会指到这里。
302Found (3xx)资源临时位于另一个 URI。历史上也是重定向;检查 Location,如果客户端 URL 有误就修正。
303See Other (3xx)结果在别处,应该用 GET 获取。在 POST 后用于 post-redirect-get 模式,指向新页面。
304Not Modified (3xx)缓存副本仍然有效;直接发送它,不需要正文。对 If-None-Match / If-Modified-Since 的有效往返;没有要修的东西。
305Use Proxy (3xx)已被 RFC 9110 废弃,不得发送。只出现在老旧或配置错误的服务器上;没有需要遵守的内容。
306Unused (3xx)保留,从未分配给真实代码。不应出现;它存在只是为了让这个编号有记录。
307Temporary Redirect (3xx)类似 302,但方法不能改变。在临时迁移期间必须保持 POST 的 POST 请求。
308Permanent Redirect (3xx)类似 301,但方法不能改变。当书签或链接指向这里时,把它们更新到新 URI。
400Bad Request (4xx)服务器无法读取请求:语法、响应头或分帧格式有误。重放完全相同的请求;错误的响应头、正文或编码是常见原因。
401Unauthorized (4xx)缺少认证,或凭据被拒绝。读取 WWW-Authenticate 响应头,然后检查凭据及其有效期。
402Payment Required (4xx)保留给未来的付费访问要求。实际中未使用;通常不会在野外看到。
403Forbidden (4xx)服务器理解请求,但拒绝执行。检查授权规则、IP 与防火墙封禁,以及文件权限。
404Not Found (4xx)请求的 URI 上没有资源存在。检查路径、API 路由,以及对象是否仍然存在。
405Method Not Allowed (4xx)URI 存在,但不支持这个方法。读取 Allow 响应头,看看端点接受什么。
406Not Acceptable (4xx)服务器无法生成匹配 Accept 响应头的表示。服务器只提供 HTML 时却请求 JSON,或反过来。
407Proxy Authentication Required (4xx)要求认证的是代理,而不是源服务器。修正代理凭据;Proxy-Authenticate 响应头会说明认证方案。
408Request Timeout (4xx)客户端发送请求花的时间太长。上传缺失或停滞;通常是客户端或网络侧,而不是服务器。
409Conflict (4xx)请求与资源当前状态冲突。版本控制或乐观锁系统的典型情况;先改变状态再重试。
410Gone (4xx)资源曾经存在,现在已被有意移除。对已删除和已下线的内容是正确的;搜索引擎随后可能会移除该 URL。
411Length Required (4xx)需要 Content-Length 响应头,但缺失。当服务器要求时补上这个头。
412Precondition Failed (4xx)条件响应头(If-Match、If-Unmodified-Since)失败。资源在客户端取得副本后发生了变化;重新获取再重试。
413Content Too Large (4xx)请求体大于服务器愿意接受的大小。提高上传上限或拆分载荷;检查服务器和代理的限制。
414URI Too Long (4xx)请求目标对服务器来说太长。把大数据放进正文而不是 URL;也检查过长的链接链。
415Unsupported Media Type (4xx)正文的 Content-Type 不是服务器能处理的类型。发送 API 文档规定的类型,例如 application/json 或 multipart/form-data。
416Range Not Satisfiable (4xx)Range 响应头无法被满足。你请求的范围超过了文件末尾;检查 Content-Range 里的有效边界。
417Expectation Failed (4xx)Expect 响应头无法被满足。客户端要求了服务器拒绝的预期;去掉 Expect 再测试。
418I’m a teapot (4xx)愚人节玩笑响应:服务器拒绝在茶壶里煮咖啡。一个文化梗,不是要修的东西;有些 lint 工具把它当作检查。
421Misdirected Request (4xx)请求发到了不该服务这个主机的服务器。SNI、主机路由或负载均衡问题;连接打到了错误的虚拟主机。
422Unprocessable Content (4xx)语法没问题,但内容在语义上是错的。校验失败的信息在响应体里;读取字段消息。
423Locked (4xx)资源被锁定,无法对请求执行操作。WebDAV 和版本化系统;释放锁再重试。
424Failed Dependency (4xx)一个相关请求失败了,所以这个请求无法执行。WebDAV;先修复依赖再重试。
425Too Early (4xx)服务器拒绝可能是重放的请求。TLS 1.3 早期数据的一部分;在安全时重试请求。
426Upgrade Required (4xx)客户端应切换到 Upgrade 响应头指定的协议。老客户端面对需要更新协议的服务器,例如 HTTP/2。
428Precondition Required (4xx)这个资源要求条件请求。源服务器需要 If-Match;为写操作加上前置条件。
429Too Many Requests (4xx)已达到速率限制;客户端发送得太快。遵守 Retry-After,然后修复客户端的限流。
431Request Header Fields Too Large (4xx)请求头超过了服务器的限制。Cookie 或响应头块变得太大;精简它或提高服务器限制。
451Unavailable For Legal Reasons (4xx)资源因法律原因被扣留。响应体会说明相关法律(RFC 7725);这不是基础设施故障。
500Internal Server Error (5xx)服务器在处理请求时出了问题。先从服务器和应用日志开始;响应体可能指出异常。
501Not Implemented (5xx)服务器不支持所用的方法。服务器老旧或功能极简;读一读它实际实现了哪些方法。
502Bad Gateway (5xx)上游服务器返回了无效内容。越过代理往上看:某个上游正在崩溃、超时或返回垃圾。
503Service Unavailable (5xx)服务器过载或正在维护。有 Retry-After 时遵守它;扩容或修复导致故障的原因。
504Gateway Timeout (5xx)上游没有及时应答。类似 502,但这里是超时;检查缓慢的上游查询和代理超时。
505HTTP Version Not Supported (5xx)所使用的 HTTP 版本不受支持。老服务器或异常客户端;几乎总是协议或代理不匹配。
506Variant Also Negotiates (5xx)内容协商中的服务器配置错误。协商循环里的配置 bug;修正服务器配置。
507Insufficient Storage (5xx)服务器无法存储所要求的内容。WebDAV 和存储后端的磁盘或配额已满;释放空间再重试。
508Loop Detected (5xx)检测到无限处理循环。WebDAV;服务器内部处理中存在循环引用。
510Not Extended (5xx)请求需要服务器不支持的扩展。非常少见,多半是遗留的 WebDAV 产物。
511Network Authentication Required (5xx)网络本身要求认证。强制门户:登录网络,而不是应用。
“全部状态码”涵盖全部五个类别。

表中的每个代码都是服务器使用的状态,而不是你浏览器里的错误。4xx 表示请求无法被满足;5xx 表示服务器无法完成。418、422、429、451 和 511 这样的代码都是真实标准,和大家都知道的那些并列出现。

这份参考是页面上的静态表:没有从服务器抓取任何东西,也没有为了查一个代码把任何内容发送到别处。

这个页面正是如此:RFC 9110 及其配套文档定义的 62 个代码,从 100 到 511,维护成一张手工表格,每个码都有名称、一行含义和一条实用的“该检查什么”。选择类别,输入 404、40x、gateway 或 retry 这样的片段,表格会随输入收窄。查询不会抓取任何东西——表格就在页面上——CSV 下载携带的也是同一张表,因此副本可以放进仓库或 wiki。

关于这个工具

这是一个参考页,不是会计算任何东西的工具:代码是一张静态、人工维护的表,页面只是包在它外面的一层薄壳。这张表刻意比人人熟悉的那几个码更宽——418(茶壶)、422(无法处理的实体)、429(请求过多)、451(因法律原因不可用)和 511(需要网络认证)都是真实标准,它们和熟悉的码排在一起,而不是因为少见就被省略。

每个码都带一条“该检查什么”,因为只报出状态名却不给下一步的参考,最终还是会把你送回调试器:301 和 302 会提醒你检查 Location 响应头以及重定向链在哪里结束,429 会提醒你检查 Retry-After 和速率限制,502 和 503 会提醒你检查上游和健康检查端点,而不是盯着代码本身。CSV 导出携带整张表以及这些行,逐列对应。

它是怎么工作的

五个类别,以及第一位在告诉你什么

1xx(信息性)表示请求正在处理——100 Continue、101 Switching Protocols——除库内部外很少见到。2xx(成功)表示成功:200 OK、201 Created、204 No Content。3xx(重定向)表示资源移动了,或请求需要另看一眼:301 永久移动、302 找到、304 未修改、308 永久重定向。

4xx(客户端错误)表示请求本身无法被满足:400 错误请求、401 未认证、403 禁止、404 未找到、405 方法不允许、422 无法处理的实体、429 请求过多。5xx(服务器错误)表示服务器无法完成:500 内部服务器错误、502 网关错误、503 服务不可用、504 网关超时。两类在日志里看起来相似,但对“该由谁修”意味着非常不同的东西——所以本页每个码都标出类别,而不只是编号。

搜索,以及表格如何收窄

搜索认识代码和单词。三位数字精确匹配,所以“404”只找到一行。带 x 的模式匹配该家族的所有成员,所以“40x”找到所有 40x,“4xx”找到整个类别——当你正在诊断的正是具体代码时很有用。任何其他词都会在名称、含义和“该检查什么”里做不区分大小写的普通搜索,所以“gateway”找到 502 和 504,“retry”找到 429,“captive”找到 511。

类别下拉框先收窄同一张表,搜索再进一步收紧,所以两者是配合而不是重复。如果什么都不匹配,页面会说明,并重复规则——因为在一张固定 62 个码的表上出现“无结果”,是搜索问题,而不是缺少代码。

从一次真实的响应里读状态码

在浏览器里,状态码是你最少直接看的那个数字:开发者工具的「网络」面板给每次请求列着它,和耗时、体积并排,那一行往往最快告诉你「页面没事、接口有事」还是「页面本身坏了」。文档返回 200、里面的 fetch 返回 500,说明问题在数据层,不在访客正在读的 HTML 里。

在终端里,curl -i 会把状态行和响应头一起打印出来,curl -o /dev/null -w "%{http_code}" 只打印这一个数字——当悄悄回答你的是跳转链或者登录墙而不是接口本身时,这正是你想要的。一个始终落不到最终 URL 的 301、或者只有带上 cookie 才会变成 200 的 302,都能在这一个数字里看见,却在你最终看到的页面上看不见。

两个习惯最省时间。先读类别再读代码:4xx 是你这边能修的请求,5xx 是别人要修的服务端,这个区别决定你继续调试还是直接提单。再看响应有没有带上这个代码承诺的响应头——201 与 3xx 的 Location、429 与 503 的 Retry-After、401 的 WWW-Authenticate。没有 Retry-After 的 503、没有质询的 401,说明响应和代码对「刚刚发生了什么」各说各话。

示例

示例使用页面自带的默认输入,只改设置;下面的结果与你在页面上看到的完全一致。

所有人最先问的那个码

类别: 所有类别 · 搜索: 404

1 个状态码

HTTP 全部状态码

搜索“404”的结果。名称遵循 RFC 9110;“该检查什么”一行是每个状态码的实用下一步。

显示: 1 · 表中总数: 62 · Classes: 5

三位数搜索精确匹配:一行,带含义和该检查什么的那一行。

一次看完全部服务器错误

类别: 5xx · 搜索: —

11 个状态码

HTTP 5xx - 服务器错误

未搜索,显示整个类别。名称遵循 RFC 9110;“该检查什么”一行是每个状态码的实用下一步。

显示: 11 · 表中总数: 62 · Classes: 5

选择类别、不输入搜索,会显示 500 到 511 的全部——适合打印出来放在值班笔记本旁边的那几个码。

常见问题

这张表是从哪里下载或抓取的吗?

都不是。62 个代码是随页面一起发布的静态表,所以查询完全不会发起请求——当你正在调试的服务恰好就是那个需要回答请求的服务时,这一点很方便。CSV 下载是同一张表在本地写进你要求的文件。

为什么严肃的参考里会出现 418 Teapot?

因为它是真实注册过的代码(一个愚人节 RFC,但一直在注册表里保留位置),并且在现实中会作为玩笑和健康检查标记出现。隐藏它的参考,会在某个服务真的返回它时让你摸不着头脑;列出它只花一行,却少一个谜团。

401 和 403 有什么区别?

401 Unauthorized 表示请求没有证明自己是谁——没有凭据,或凭据不对——响应通常带一个 WWW-Authenticate 头说明该怎么做。403 Forbidden 表示服务器知道你是谁,但仍然不会照做。这个区别决定“带上登录再试一次”到底有没有用。

什么时候需要关心 1xx 和 3xx?

1xx 代码在 HTTP 库和代理内部就被处理了,所以你几乎看不到——知道它们存在,能让它们在追踪记录里出现时不至于让你意外。3xx 对任何关心链接或性能的人都很重要:301 应该更新链接,302 或 307 表示临时绕路,而重定向链每跳都要多一次往返,所以“检查重定向链”是一项真实的调试任务。

为什么用 40x,而不是直接输入代码?

因为很多时候,正在被调查的恰恰就是具体代码:“40x”一次显示所有客户端错误码,让你看到整个家族,“5xx”显示整个服务器错误类别,而“retry”这样的词会找到那些答案与速率和等待有关的码。当你还不知道自己在找哪个码时,模式和单词就是搜索工具。

资料来源与统计口径

  • 62 个状态码及其含义来自 RFC 9110(HTTP 语义)及其配套文档。
  • 每条记录都附一句白话释义和一句“该检查什么”,并按 1xx 到 5xx 五个类别分组。
  • 表格与 CSV 下载都是固定的参考资料,页面不会发起任何网络请求。

最近复核于 2026-10-07.

本页在您的浏览器本地运行,请保留原文件备份;不涉及财务建议。 阅读完整免责声明。