HTTP 状态码

HTTP 响应状态码的完整参考:每个状态码的含义、服务器何时发送它以及应如何应对——适用于调试请求、编写 API 文档和检查服务器日志。

使用跳转链接在各响应类别之间切换,或打开最常见状态码的详细指南。

HTTP 响应码表

Code 名称 含义
1xx 信息响应
100 Continue 服务器已收到请求头,客户端应发送请求体。
101 Switching Protocols 服务器同意切换到 Upgrade 头中请求的协议。
102 Processing 服务器已接受完整请求,但尚未处理完成(WebDAV)。
103 Early Hints 在最终响应之前发送的初步响应头,主要是 Link 预加载提示。
2xx 成功
200 OK 请求成功,响应中携带了所请求的表示。
201 Created 请求成功,并创建了新资源,通常在 Location 中给出其名称。
202 Accepted 请求已被接受,进入异步处理,但尚未完成。
203 Non-Authoritative Information 响应在传输途中被转换代理修改过。
204 No Content 请求成功,并且有意不返回响应体。
205 重置 Content 请求成功,客户端应重置文档视图或表单。
206 Partial Content 响应仅返回由 Range 头请求的字节范围。
3xx 重定向
300 Multiple Choices 存在多种表示形式,客户端应从中选择一种。
301 Moved Permanently 资源拥有一个永久性的新 URL,链接应予以更新。
302 Found 资源暂时位于另一个 URL;请继续使用原始地址。
303 See Other 结果可在另一个 URL 获取,应使用 GET 方法请求。
304 Not Modified 缓存副本仍然有效,因此不再发送响应体。
307 Temporary Redirect 必须保留原始 HTTP 方法和请求体的临时重定向。
308 Permanent Redirect 必须保留原始 HTTP 方法和请求体的永久重定向。
4xx 客户端错误
400 Bad Request 由于请求格式错误,服务器无法处理该请求。
401 Unauthorized 需要有效的身份验证凭据,但当前缺失或不正确。
402 Payment Required 保留状态码,实际中被一些 API 用于计费限制场景。
403 Forbidden 服务器已理解请求,但拒绝授权执行。
404 Not Found 请求的 URL 上不存在任何资源。
405 Method Not Allowed URL 存在,但不支持该 HTTP 方法。
406 Not Acceptable 没有任何表示形式能匹配 Accept 协商头。
407 Proxy Authentication Required 客户端必须先向代理进行身份验证。
408 Request Timeout 由于请求到达耗时过长,服务器关闭了连接。
409 Conflict 请求与资源的当前状态冲突,例如编辑冲突。
410 Gone 资源已被有意移除,并且不会恢复。
411 Length Required 请求必须包含 Content-Length 头。
412 Precondition Failed 诸如 If-Match 之类的条件头判定为假。
413 Content Too Large 请求体超过了服务器可接受的大小。
414 URI Too Long 请求 URL 的长度超出了服务器可解析的范围。
415 Unsupported Media Type 该资源不支持请求体所使用的格式。
416 Range Not Satisfiable 请求的字节范围超出了资源的大小。
417 Expectation Failed 无法满足 Expect 请求头的要求。
418 I'm a teapot 出自 RFC 2324 的愚人节状态码;一些 API 将其用作彩蛋。
421 Misdirected Request 请求到达了无法为该权威机构生成响应的服务器。
422 Unprocessable Content 请求格式正确,但语义上无效,常见于 REST 校验场景。
425 Too Early 服务器拒绝处理可能被重放的请求(TLS early data)。
426 Upgrade Required 客户端必须切换到 Upgrade 中列出的其他协议。
428 Precondition Required 服务器要求使用条件请求以防止更新丢失。
429 Too Many Requests 客户端超出了速率限制;Retry-After 提示应何时重试。
431 Request Header Fields Too Large 请求头(通常是 cookie)超出了服务器的大小限制。
451 Unavailable For Legal Reasons 因法律原因(例如法院命令)而被禁止访问。
5xx 服务器错误
500 Internal Server Error 服务器在处理请求时遇到了意外错误。
501 Not Implemented 服务器无法识别或不支持该请求方法。
502 Bad Gateway 网关或代理从上游服务器收到了无效响应。
503 Service Unavailable 由于过载或维护,服务器暂时无法提供服务。
504 Gateway Timeout 网关或代理等待上游服务器响应超时。
505 HTTP Version Not Supported 服务器不支持所使用的 HTTP 协议版本。
506 Variant Also Negotiates 服务器上的内容协商配置错误。
507 Insufficient Storage 服务器没有足够的存储空间来完成请求(WebDAV)。
508 Loop Detected 服务器在处理过程中检测到无限循环(WebDAV)。
510 Not Extended 请求需要进一步的扩展,但未提供。
511 Network Authentication Required 网络(例如强制门户)要求先进行身份验证。

1xx 信息响应

信息响应确认请求已被接收,客户端可以继续。它们是临时性的:最终一定会跟随一个正式状态码。你在实际中最可能遇到的是 103 Early Hints,它允许服务器在完整响应就绪前推送预加载提示。

2xx 成功

成功响应表示请求已被理解并接受。200 OK 在响应体中携带结果,201 Created 表示创建了新资源,204 No Content 表示成功但故意不返回任何内容。

3xx 重定向

重定向响应将客户端指向别处。关键区别在于是否永久——301/308 是永久的,302/307 是临时的——以及 HTTP 方法是必须保留(307/308)还是可以变为 GET(301/302)。304 Not Modified 是支撑浏览器缓存的特殊情况。

4xx 客户端错误

客户端错误意味着请求本身被拒绝。常见的有:400 请求格式错误、401 需要身份验证、403 拒绝访问、404 该 URL 不存在内容,以及 429 超出速率限制。

5xx 服务器错误

服务器错误意味着服务器在处理一个可能完全合法的请求时失败了。500 是应用程序崩溃,502504 是代理报告上游出现故障或无响应,503 则是有意为之的临时不可用。

如何解读状态码

首位数字代表类别:1xx 信息响应、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误。客户端遇到未知状态码时,可以安全地将其当作所属类别的 x00 状态码处理——这正是新状态码能保持向后兼容的原因。调试时,务必结合状态码旁边的响应头一起看:Location 说明重定向去向,Allow 说明 405 的原因,Retry-After 说明 429 和 503 的原因。

示例

200 OK                    — page served normally
301 Moved Permanently     — URL changed for good, follow Location
304 Not Modified          — your cached copy is still valid
404 Not Found             — nothing exists at this URL
429 Too Many Requests     — rate limit hit, wait Retry-After seconds
503 Service Unavailable   — temporary downtime or maintenance

常见问题

什么是 HTTP 404?

HTTP 404 表示在指定 URL 找不到请求的资源。查看详细的 404 指南以了解原因、修复方法和 SEO 影响。

301 与 302 有什么区别?

301 重定向是永久的——链接和搜索引擎都应更新为新 URL。302 表示临时迁移,原 URL 仍是规范地址。

503 代表什么?

HTTP 503 表示服务暂时不可用,通常是由于维护或过载,客户端应在延迟后重试。

401 和 403 有什么区别?

401 表示服务器需要有效的身份验证凭据。403 表示服务器已经知道你是谁,但仍然拒绝访问——重新登录也无济于事。

502 和 504 有什么区别?

两者都来自与上游服务器通信的代理:502 表示上游返回了无效响应,504 表示上游在超时时间内始终没有响应。

哪些状态码对 SEO 最重要?

200 标记可被索引的页面,301/308 在永久迁移时传递排名权重,404/410 移除失效 URL,503 在配合 Retry-After 使用时可在停机期间保护排名。