nicetool.dev logo

HTTP 状态码

按数字或名称搜索,或按类别筛选。每个状态码都链接到对应规范。

1xx 信息响应

请求已收到,处理继续进行。在应用代码中很少见到。

100

Continue

服务器已收到请求头,客户端可以继续发送请求体。大文件上传前配合 "Expect: 100-continue" 使用。

RFC 9110
101

Switching Protocols

服务器同意按客户端要求切换协议,例如从 HTTP/1.1 切换到 WebSocket。

RFC 9110
102

Processing

WebDAV:服务器已接受请求,仍在处理中,客户端不应因超时而断开。

RFC 2518
103

Early Hints

提前发送 Link 头,让浏览器在服务器准备最终响应时预加载 CSS 或字体。

RFC 8297

2xx 成功

请求已被成功接收、理解并接受。

200

OK

请求成功。响应体包含所请求的资源或操作结果。

RFC 9110
201

Created

已创建新资源,通常发生在 POST 之后。Location 头应指向该资源。

RFC 9110
202

Accepted

请求已被接受处理,但尚未完成,例如排队中的后台任务。

RFC 9110
203

Non-Authoritative Information

请求成功,但响应被转换型代理修改过,与源服务器发出的内容不完全相同。

RFC 9110
204

No Content

成功但没有内容返回。常用于 DELETE 或在不刷新页面的情况下保存表单。

RFC 9110
205

Reset Content

成功;客户端应重置发出请求的表单或视图。

RFC 9110
206

Partial Content

按 Range 头只返回资源的一部分。用于断点续传和视频拖动。

RFC 9110
207

Multi-Status

WebDAV:响应体包含针对多个操作的多个状态码。

RFC 4918
208

Already Reported

WebDAV:响应中前面已列出的成员不再重复。

RFC 5842
226

IM Used

服务器对响应应用了增量编码。极少使用。

RFC 3229

3xx 重定向

需要进一步操作(通常是访问另一个 URL)才能完成请求。

300

Multiple Choices

存在多个表示形式(如语言或格式),客户端需要从中选择一个。

RFC 9110
301

Moved Permanently

资源已永久移动到 Location 指定的新 URL。搜索引擎会把排名转移到新 URL。

RFC 9110
302

Found

资源暂时位于另一个 URL。客户端仍应使用原 URL;浏览器可能把 POST 改为 GET。

RFC 9110
303

See Other

结果可以用 GET 在另一个 URL 获取。用于表单 POST 后避免重复提交(Post/Redirect/Get)。

RFC 9110
304

Not Modified

缓存副本仍然有效(If-None-Match 或 If-Modified-Since 匹配),因此不发送响应体。

RFC 9110
307

Temporary Redirect

保留请求方法和请求体的临时重定向,POST 仍是 POST。

RFC 9110
308

Permanent Redirect

保留请求方法和请求体的永久重定向,是 301 的严格版本。

RFC 9110

4xx 客户端错误

请求有误:语法错误、未认证、无权限或资源不存在。

400

Bad Request

请求格式错误,服务器无法处理:语法错误、JSON 损坏或参数不正确。

RFC 9110
401

Unauthorized

缺少认证或认证无效。响应中的 WWW-Authenticate 头会说明登录方式。

RFC 9110
402

Payment Required

为未来的数字支付系统保留;部分 API 在需要付费订阅或额度时使用。

RFC 9110
403

Forbidden

服务器知道你是谁,但你没有权限,因此拒绝操作。重新登录也无济于事。

RFC 9110
404

Not Found

资源不存在,或者服务器不想透露它是否存在。

RFC 9110
405

Method Not Allowed

此 URL 不支持该 HTTP 方法,例如对只读资源发送 POST。Allow 头会列出可用的方法。

RFC 9110
406

Not Acceptable

服务器无法生成符合 Accept 头(类型、语言或编码)的响应。

RFC 9110
407

Proxy Authentication Required

与 401 类似,但客户端需要先通过代理认证。

RFC 9110
408

Request Timeout

服务器等待客户端发送完请求的时间过长,已关闭连接。

RFC 9110
409

Conflict

请求与资源当前状态冲突,例如编辑冲突或唯一键重复。

RFC 9110
410

Gone

资源已被有意删除且不会恢复。搜索引擎会比 404 更快地将其移除。

RFC 9110
411

Length Required

服务器要求此请求携带 Content-Length 头。

RFC 9110
412

Precondition Failed

If-Match 等条件头不匹配,常用于防止覆盖他人的修改。

RFC 9110
413

Content Too Large

请求体超过服务器允许的大小(原名 "Payload Too Large")。

RFC 9110
414

URI Too Long

URL 超出服务器接受的长度,通常是因为在 GET 查询字符串中放了太多数据。

RFC 9110
415

Unsupported Media Type

不支持请求体的格式(Content-Type),例如向只接受 JSON 的 API 发送 XML。

RFC 9110
416

Range Not Satisfiable

Range 头请求了文件中不存在的部分。

RFC 9110
417

Expectation Failed

服务器无法满足 Expect 头中的要求。

RFC 9110
418

I'm a teapot

来自“超文本咖啡壶控制协议”的愚人节玩笑:茶壶不能煮咖啡。有些网站把它当作彩蛋。

RFC 2324
421

Misdirected Request

请求被发到了无法为该主机响应的服务器,例如复用的 HTTP/2 连接指向了错误的源。

RFC 9110
422

Unprocessable Content

语法正确但内容无效,例如未通过校验规则(原名 "Unprocessable Entity")。

RFC 9110
423

Locked

WebDAV:资源已被锁定。

RFC 4918
424

Failed Dependency

WebDAV:请求失败,因为它依赖的另一个请求失败了。

RFC 4918
425

Too Early

服务器不处理可能被重放的请求,例如 TLS 1.3 的早期数据。

RFC 8470
426

Upgrade Required

客户端必须切换到 Upgrade 头中指定的其他协议。

RFC 9110
428

Precondition Required

服务器要求使用条件请求(If-Match),以避免更新丢失。

RFC 6585
429

Too Many Requests

客户端在一定时间内发送了过多请求(限流)。Retry-After 说明何时可以重试。

RFC 6585
431

Request Header Fields Too Large

请求头总体过大或某个头过大,通常是 Cookie 过大导致。

RFC 6585
451

Unavailable For Legal Reasons

因法律原因被屏蔽,例如审查或法院命令。这个数字取自小说《华氏 451》。

RFC 7725

5xx 服务器错误

请求看起来有效,但服务器处理失败。

500

Internal Server Error

通用错误:服务器发生了意外问题。请检查服务器日志。

RFC 9110
501

Not Implemented

服务器不支持完成请求所需的功能或方法。

RFC 9110
502

Bad Gateway

网关或代理从上游服务器收到了无效响应,例如 Nginx 后面的应用崩溃了。

RFC 9110
503

Service Unavailable

服务器因过载或维护暂时无法处理请求。Retry-After 可能会说明何时恢复。

RFC 9110
504

Gateway Timeout

网关或代理没有及时收到上游服务器的响应。

RFC 9110
505

HTTP Version Not Supported

服务器不支持请求所使用的 HTTP 版本。

RFC 9110
506

Variant Also Negotiates

内容协商配置错误:被选中的变体本身又试图进行协商。

RFC 2295
507

Insufficient Storage

WebDAV:服务器无法存储完成请求所需的数据。

RFC 4918
508

Loop Detected

WebDAV:服务器在处理请求时检测到无限循环。

RFC 5842
510

Not Extended

请求需要进一步的扩展。已废弃,几乎不再使用。

RFC 2774
511

Network Authentication Required

客户端需要先登录网络,典型场景是酒店或机场 Wi-Fi 的认证页面。

RFC 6585

什么是 HTTP 状态码?

每个 HTTP 响应都以一个三位数的状态码开头,告诉客户端请求的结果。第一位数字决定类别:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误。浏览器、搜索引擎、缓存、API 客户端和监控工具都会根据这些状态码行事,因此选对状态码很重要:301 会把 SEO 权重传递给新 URL 而 302 不会,503 告诉爬虫稍后再来,429 告诉 API 客户端放慢速度。这些状态码主要定义在 RFC 9110(HTTP 语义)中,少数在单独的 RFC 里。

功能

  • • 收录 IANA 注册的全部 61 个状态码(100 到 511)
  • • 通俗解释每个状态码的含义和使用场景
  • • 按数字、名称或关键词即时搜索,并可按类别筛选
  • • 直接链接到定义该状态码的 RFC 章节
  • • 按类别着色,支持 #状态码 锚点分享链接

快速、可离线使用

完整参考资料已内置于页面中,搜索在浏览器内即时完成,不会向服务器发送请求。

可搜索的参考手册,无追踪。

HTTP 状态码使用方法

  1. 1

    在搜索框中输入数字(如 404)、名称(如 "gateway")或关键词(如 "redirect"),结果随输入实时更新。

  2. 2

    用类别按钮(1xx 到 5xx)缩小列表,例如一次查看所有客户端错误。

  3. 3

    阅读每个状态码下的说明:它的含义、服务器何时应该返回、客户端会如何处理。

  4. 4

    点击 RFC 链接查看准确规范,或用 #429 这样的锚点直接分享某个状态码。

实际应用示例

设计 REST API

POST 成功后返回 201 Created 并带 Location 头,DELETE 后返回 204 No Content,JSON 格式错误返回 400,校验失败返回 422,与当前状态冲突返回 409。

迁移页面并保留 SEO

永久迁移用 301 或 308,让搜索引擎转移排名;临时跳转(如 A/B 测试)用 302 或 307。308 和 307 还会保持 POST 方法不变。

认证类错误

用户未登录或 token 无效时返回 401;已知用户但无权限时返回 403。很多 API 会用 404 代替 403,以隐藏资源是否存在。

维护与过载

维护期间返回 503 并带 Retry-After 头,让爬虫保留排名;客户端超出频率限制时返回 429 并带 Retry-After。

常见问题

401 和 403 有什么区别?+

401 Unauthorized 表示“你是谁?”:缺少认证或认证失败。403 Forbidden 表示“我知道你是谁,但你不能做这件事”。重新登录可以解决 401,但解决不了 403。

重定向用 301 还是 302?+

旧 URL 永久失效用 301(或 308),之后还会恢复用 302(或 307)。永久迁移却用 302,可能会延迟搜索引擎收录新 URL。

502、503 和 504 有什么区别?+

502 Bad Gateway:代理从上游服务器收到无效响应。503 Service Unavailable:服务器过载或正在维护。504 Gateway Timeout:上游服务器没有及时响应。

出错时可以返回 200 加错误信息吗?+

不应该。客户端、缓存和监控都依赖状态码。失败时返回 200 会让工具发现不了错误,错误页面还可能被当作“软 404”收录。