HTTP 状态码
用通俗的话解释每一个 HTTP 状态码:它是什么意思、常见原因、怎么解决、响应示例,以及定义它的 RFC。
共 70 个状态码
1xx 信息
临时响应:请求已收到,正在继续处理。
2xx 成功
请求已被成功接收、理解并接受。
200 OK 成功 请求成功。对于 GET,响应体包含所请求的资源;对于 POST,响应体包含操作结果。 201 Created 已创建 请求成功并创建了新资源。Location 头通常指向这个新资源。 202 Accepted 已接受 请求已被接受等待处理,但处理尚未完成,响应时还不知道结果。 203 Non-Authoritative Information 非权威信息 请求成功,但一个转换型代理修改了源服务器 200 响应的内容。 204 No Content 无内容 请求成功,没有需要返回的响应体。响应头中仍可携带新的 ETag 等元数据。 205 Reset Content 重置内容 请求成功,客户端应重置文档视图,例如清空刚提交的表单。不发送响应体。 206 Partial Content 部分内容 服务器按 Range 头的请求只返回资源的一部分。Content-Range 说明包含哪些字节。 207 Multi-Status 多状态 WebDAV 响应,其 XML 响应体为一次请求影响的多个资源分别给出状态。 208 Already Reported 已报告 用在 WebDAV 207 响应体内,表示该资源在响应中前面已经列出过,避免绑定形成循环时重复列出。 226 IM Used 已使用 IM 服务器在完成 GET 时应用了一个或多个实例操作(增量编码),所以响应体是差异而不是完整资源。
3xx 重定向
客户端需要再做一步,通常是跳转到新的 URL。
300 Multiple Choices 多种选择 资源有多种表示(语言、格式),需要客户端或用户选择其一。服务器可以通过 Location 推荐首选项。 301 Moved Permanently 永久移动 资源已永久移动到 Location 中的 URL。客户端和搜索引擎今后应使用新 URL。 302 Found 临时跳转 资源暂时位于另一个 URL。客户端以后仍应使用原来的 URL 发起请求。 303 See Other 查看其他位置 服务器引导客户端用 GET 获取另一个 URL,通常用于展示 POST 的结果。 304 Not Modified 未修改 客户端已有的缓存副本仍然有效,因此服务器不发送响应体。它是对带 If-None-Match 或 If-Modified-Since 的条件请求的回应。 305 Use Proxy 使用代理 已废弃。它曾要求客户端通过 Location 中的代理重新发送请求。出于安全原因,浏览器会忽略它。 307 Temporary Redirect 临时重定向 资源暂时位于另一个 URL,客户端必须用相同的方法和请求体在那里重发请求。 308 Permanent Redirect 永久重定向 资源已永久移动,客户端必须用相同的方法和请求体在新 URL 上重发请求。
4xx 客户端错误
请求本身有问题,需要客户端修正。
400 Bad Request 错误请求 请求格式有误,服务器无法处理:语法无效、报文结构错误或包含无法解析的值。 401 Unauthorized 未授权 请求缺少有效的身份认证凭据。名字虽叫“未授权”,实际意思是“未认证”:需要登录或发送有效令牌。 402 Payment Required 需要付款 保留供将来使用,但实际上很多服务在需要付款或付费套餐才能继续时返回它。 403 Forbidden 禁止访问 服务器理解了请求但拒绝授权。除非权限发生变化,重新登录也没有用。 404 Not Found 未找到 服务器在请求的 URL 上找不到任何内容。它不说明资源是否曾经存在或将来是否会恢复。 405 Method Not Allowed 方法不允许 URL 存在,但不支持所使用的 HTTP 方法。Allow 头列出了可用的方法。 406 Not Acceptable 无法接受 服务器无法生成客户端 Accept 头所允许的任何格式的响应。 407 Proxy Authentication Required 需要代理认证 客户端和服务器之间的代理要求先进行认证,才会转发请求。 408 Request Timeout 请求超时 客户端没有在规定时间内发送完整的请求,服务器关闭了连接。 409 Conflict 冲突 请求与资源的当前状态冲突,例如重复数据或并发编辑。 410 Gone 已删除 资源已永久消失,且没有已知的新地址。与 404 不同,这是服务器有意声明的。 411 Length Required 需要长度 服务器要求提供 Content-Length 头,但请求中没有。 412 Precondition Failed 前提条件失败 请求头中的前提条件(如 If-Match 或 If-Unmodified-Since)判定为假,因此服务器没有执行该请求。 413 Content Too Large 内容过大 请求体超过了服务器愿意或能够处理的大小。以前称为 Payload Too Large。 414 URI Too Long URI 过长 请求的 URL 超过了服务器愿意解析的长度。 415 Unsupported Media Type 不支持的媒体类型 请求体的媒体类型(Content-Type)或编码不受支持,服务器拒绝了请求。 416 Range Not Satisfiable 范围无法满足 Range 头请求的字节超出了资源的大小。 417 Expectation Failed 预期失败 服务器无法满足请求中 Expect 头的要求,通常是 Expect: 100-continue。 418 I'm a teapot 我是茶壶 来自超文本咖啡壶控制协议的愚人节玩笑:服务器是一把茶壶,拒绝煮咖啡。有些网站用它开玩笑或拦截机器人。 421 Misdirected Request 请求被误导 请求到达了一台没有配置为该主机提供服务的服务器,常见原因是 HTTP/2 连接被复用到了另一个域名。 422 Unprocessable Content 无法处理的内容 请求格式正确但包含语义错误,服务器无法处理。以前称为 Unprocessable Entity。 423 Locked 已锁定 WebDAV:资源已被锁定,无法执行该方法。 424 Failed Dependency 依赖失败 WebDAV:操作失败,因为它依赖的同一请求中的另一个操作失败了。 425 Too Early 为时过早 服务器拒绝处理通过 TLS 1.3 早期数据(0-RTT)发送的请求,因为它可能被重放。 426 Upgrade Required 需要升级 服务器拒绝用当前协议处理请求,要求客户端升级到 Upgrade 头中指定的协议,例如 TLS 或 HTTP/2。 428 Precondition Required 需要前提条件 服务器要求请求必须是条件请求(If-Match 等),以防止更新丢失。 429 Too Many Requests 请求过多 客户端在一定时间内发送了太多请求(被限流)。Retry-After 可能说明需要等待多久。 431 Request Header Fields Too Large 请求头字段过大 请求头太大,可能是某一个请求头过大,也可能是所有请求头加起来过大。 451 Unavailable For Legal Reasons 因法律原因不可用 由于法院命令或政府审查等法律原因,服务器无法提供该资源。这个数字致敬了《华氏 451》。 499 Client Closed Request (非标准) 客户端关闭请求 当客户端在服务器发送响应之前关闭连接时,nginx 会记录 499。客户端永远看不到这个状态码。
5xx 服务器错误
请求有效,但服务器没能完成它。
500 Internal Server Error 服务器内部错误 服务器遇到意外情况,无法完成请求。这是服务器端错误的通用兜底状态码。 501 Not Implemented 未实现 服务器不支持完成请求所需的功能,通常是不支持请求方法本身。 502 Bad Gateway 网关错误 网关或代理从它转发请求的上游服务器收到了无效响应。 503 Service Unavailable 服务不可用 服务器由于过载或维护暂时无法处理请求。Retry-After 可能说明何时再试。 504 Gateway Timeout 网关超时 网关或代理没有及时从上游服务器收到响应。 505 HTTP Version Not Supported HTTP 版本不受支持 服务器不支持请求中使用的 HTTP 版本。 506 Variant Also Negotiates 变体也在协商 透明内容协商配置错误:被选中的变体本身又被设置为参与协商,形成循环。 507 Insufficient Storage 存储空间不足 服务器无法存储完成请求所需的内容(磁盘空间或配额不足)。起源于 WebDAV。 508 Loop Detected 检测到循环 服务器在处理 Depth: infinity 的请求(WebDAV)时检测到无限循环。一些主机商也用它表示资源限制。 510 Not Extended 未扩展 服务器需要更多扩展才能完成请求(HTTP 扩展框架)。该框架现已成为历史。 511 Network Authentication Required 需要网络认证 客户端需要先认证才能访问网络,常见于强制门户(酒店或机场 Wi-Fi)。 520 Web Server Returned an Unknown Error (非标准) 未知错误 Cloudflare 专用:源服务器返回了空的、未知的或意外的响应。 521 Web Server Is Down (非标准) 服务器已关闭 Cloudflare 专用:源服务器拒绝了连接。 522 Connection Timed Out (非标准) 连接超时 Cloudflare 专用:与源服务器的 TCP 连接超时。 523 Origin Is Unreachable (非标准) 源站不可达 Cloudflare 专用:Cloudflare 无法访问源服务器,通常是 DNS 或路由问题。 524 A Timeout Occurred (非标准) 发生超时 Cloudflare 专用:已与源服务器建立连接,但源服务器没有及时发送 HTTP 响应(默认 100 秒)。 525 SSL Handshake Failed (非标准) SSL 握手失败 Cloudflare 专用:Cloudflare 与源服务器之间的 TLS 握手失败。 526 Invalid SSL Certificate (非标准) 无效的 SSL 证书 Cloudflare 专用:在 Full (strict) SSL 模式下,源服务器的证书无效、已过期、自签名或与主机名不匹配。