| 1xx 信息提示 |
|---|
| Continue | 服务器已收到请求头,客户端可以发送请求体。 | 上传大请求体之前完成预检之后。 |
| Switching Protocols | 服务器同意切换到客户端请求的协议。 | 将 HTTP 连接升级为 WebSocket。 |
| Processing | 服务器已收到请求并仍在处理。 | WebDAV 服务器确认一个长请求,避免客户端超时。 |
| Early Hints | 服务器在最终响应就绪之前先发送初步响应头。 | 在页面仍在渲染时让浏览器预加载资源。 |
| 2xx 成功 |
|---|
| OK | 请求成功,响应体携带结果。 | GET 或 PUT 的标准成功响应。 |
| Created | 请求成功并创建了新资源。 | 创建资源的 POST 成功后返回。 |
| Accepted | 请求已被接受处理,但尚未完成。 | 长时间运行的任务已启动并异步执行。 |
| Non-Authoritative Information | 请求成功,但返回的数据在回程中被转换过。 | 代理或缓存返回修改过的元数据而非源站的。 |
| No Content | 请求成功,且没有可返回的响应体。 | DELETE 成功,或一个无需返回内容的 PUT。 |
| Reset Content | 请求成功,客户端应重置发送该请求的视图。 | 表单提交后,让页面清空自己的字段。 |
| Partial Content | 服务器按请求只返回资源的一部分。 | 为 Range 请求提供字节范围。 |
| 3xx 重定向 |
|---|
| Moved Permanently | 资源有了永久的新 URL,后续请求应使用它。 | 页面迁移,搜索引擎必须更新索引。 |
| Found | 资源临时位于另一个 URL,但应继续使用原 URL。 | 暂时重定向到登录页。 |
| See Other | 答案在另一个 URL,必须用 GET 获取。 | PRG 模式:把 POST 重定向到结果页,刷新就不会重复提交。 |
| Not Modified | 缓存副本仍然有效,因此服务器不发送响应体。 | 客户端缓存是最新的条件 GET。 |
| Use Proxy | 请求必须通过响应中指定的代理发送。 | 传统代理网络;2011 年起已废弃。 |
| Temporary Redirect | 资源临时在别处,且必须保留原始请求方法。 | 类似 302,但重定向后 POST 仍是 POST。 |
| Permanent Redirect | 资源有了永久的新 URL,且必须保留原始请求方法。 | 类似 301,但重定向后 POST 仍是 POST。 |
| 4xx 客户端错误 |
|---|
| Bad Request | 服务器因语法格式错误而无法理解请求。 | 格式错误的 JSON,或缺少必填字段。 |
| Unauthorized | 需要身份验证,而它缺失或失败了。 | 没有令牌,或令牌无效或过期。 |
| Payment Required | 请求需要付款,尽管规范从未定义如何付款。 | 一些 API 用作付费墙标记;大多数从不使用。 |
| Forbidden | 客户端已通过身份验证,但无权访问该资源。 | 登录有效,但对该资源没有权限。 |
| Not Found | 服务器在此 URL 上没有资源。 | 未知 URL 或不存在的 ID。 |
| Method Not Allowed | URL 存在,但不允许所用的请求方法。 | 向只接受 GET 的端点发 POST。 |
| Not Acceptable | 服务器无法返回与客户端 Accept 头匹配的内容。 | 客户端只要 XML,而 API 只返回 JSON。 |
| Proxy Authentication Required | 客户端必须先向代理进行身份验证,请求才能继续。 | 企业代理拒绝未经验证的请求。 |
| Request Timeout | 客户端发送请求耗时过长,服务器放弃等待。 | 请求体尚未传完就停滞的上传。 |
| Conflict | 请求与资源的当前状态冲突。 | 邮箱重复,或同一条记录上的编辑竞争。 |
| Gone | 资源曾经存在,但已被永久移除。 | 有意下线的端点,比 404 更明确。 |
| Length Required | 请求需要 Content-Length 头,但没有提供。 | 必须预先知道大小的服务器拒绝流式请求体。 |
| Precondition Failed | If-Match 之类的头前置条件求值为假。 | 客户端读取后记录已变更的乐观编辑。 |
| Content Too Large | 请求体超过服务器接受的上限。 | 超过服务器最大请求体大小的上传。 |
| URI Too Long | 请求 URL 超过服务器愿意解析的长度。 | 表单被意外序列化成不断增长的 GET 查询串。 |
| Unsupported Media Type | 请求体格式不是该端点接受的类型。 | 以 Content-Type text/plain 向只接受 JSON 的端点发 POST。 |
| Range Not Satisfiable | Range 头中的字节范围与资源不匹配。 | 续传时请求超出文件末尾的字节。 |
| Expectation Failed | 服务器无法满足 Expect 头中声明的期望。 | 服务器拒绝履行的 100-continue 期望。 |
| I'm a teapot | 服务器是一个茶壶,拒绝煮咖啡。 | 1998 年愚人节玩笑,经久不衰;API 出于趣味返回它。 |
| Misdirected Request | 请求被发送到无法为其产生响应的服务器。 | 复用的连接被发送到该服务器不服务的主机。 |
| Unprocessable Entity | 请求格式正确,但其值未通过语义校验。 | 字段违反业务规则的有效 JSON。 |
| Too Early | 服务器拒绝有重放风险的请求。 | 在密钥轮换之前拒绝重试的非幂等请求。 |
| Upgrade Required | 客户端必须切换到其他协议才能使用该资源。 | 坚持要求 TLS 或 WebSocket 的端点。 |
| Precondition Required | 服务器要求请求未携带的条件头。 | 要求 If-Match 以防止更新丢失的 API。 |
| Too Many Requests | 客户端在给定时间窗口内发送了过多请求。 | 触发速率限制;退避后重试。 |
| Request Header Fields Too Large | 一个或多个头字段大到服务器无法处理。 | 不断增长直至阻塞对站点所有请求的 cookie 或令牌。 |
| Unavailable For Legal Reasons | 资源因法律原因被封锁,例如下架令或地域限制。 | 政府下架令,或在某一国家被封锁的页面。 |
| 5xx 服务器错误 |
|---|
| Internal Server Error | 服务器遇到意外状况并失败。 | 服务器上未处理的异常或缺陷。 |
| Not Implemented | 服务器不支持所请求的方法或功能。 | 端点已声明但尚未实现。 |
| Bad Gateway | 网关或代理从上游服务器收到无效响应。 | 反向代理无法连接后端。 |
| Service Unavailable | 服务器暂时无法处理请求。 | 维护、过载,或依赖的服务宕机。 |
| Gateway Timeout | 网关或代理未能在时限内从上游服务器获得响应。 | 后端耗时过长,代理放弃等待。 |
| HTTP Version Not Supported | 服务器不支持请求中的 HTTP 版本。 | 客户端使用服务器从未学过的协议版本。 |
| Variant Also Negotiates | 透明内容协商以循环引用告终。 | 进行实验性内容协商的配置错误的服务器。 |
| Insufficient Storage | 服务器无法存储完成请求所需的表示。 | 分配存储已满的 WebDAV 服务器。 |
| Loop Detected | 服务器在处理请求时遇到无限循环。 | 指回自身的 WebDAV 绑定。 |
| Network Authentication Required | 客户端必须向网络进行身份验证才能获得访问权。 | 酒店或机场的强制门户(captive portal)拦截请求。 |