继续请求(Continue)
信息响应服务器已接收请求起始部分,客户端应继续发送主体或后续数据。
全量收录 1xx 至 5xx HTTP 响应状态码标准规范。支持毫秒级中英文全文检索,深度解析协议语义、高频诱发原因、服务端排障修复建议与标准响应报文,助力 API 架构与网络排障。
服务器已接收请求起始部分,客户端应继续发送主体或后续数据。
服务器同意按照客户端 Upgrade 请求头的要求切换网络传输协议。
服务器已完整接收请求,当前仍在处理复杂事务,用于避免客户端超时断连。
在最终响应下发前提前返回响应头,告知浏览器预加载关键关键静态资源。
请求已成功执行并返回相应数据。成功的具体业务含义取决于所使用的 HTTP 请求方法。
请求已成功完成,并因此在服务端创建了一个或多个全新的资源实体。
服务器已接受该请求,但具体处理尚未完成或将以异步任务方式延后执行。
请求已成功处理,但响应中的元信息载荷已被中间代理或转换网关修改。
请求已成功执行,但响应报文中不需要且绝不能包含任何实体正文(Body)。
请求已成功执行,告知客户端必须重置当前发起请求的视图或表单输入项。
服务器已成功满足客户端的 Range 分片范围请求,仅传输指定字节区间的数据。
WebDAV 协议批量操作响应,消息体 XML 中针对多个子资源分别封装独立状态码。
WebDAV 集合元素在先前的 207 Multi-Status 响应中已枚举,避免多重引用重复报告。
服务器已完成资源请求,且响应所呈现的实体是经过实例操作(增量编码)后的结果。
目标资源存在多种可用的表征形式,服务器返回候选列表供客户端进行内容协商。
请求资源已永久分配新 URI,未来所有请求应直接使用 Location 中指定的新地址。
请求资源临时迁移至新 URI,搜索引擎不会转移权重,后续请求仍应继续访问旧地址。
重定向至新 URI,且客户端必须显式改用 GET 方法去拉取目标资源。
条件请求命中本地缓存,请求资源自上次获取以来未发生任何修改,无需传输数据。
该状态码已在最新 HTTP 协议规范中被废弃,出于网络安全防劫持考量严禁遵从。
临时重定向至新 URI,且 RFC 9110 规范严格要求客户端必须保留原始请求方法与请求体。
永久重定向至新 URI,传递 SEO 权重,且 RFC 严格要求必须保持原始请求方法与请求体。
请求由于语法畸形、请求头破损或非法字符编码导致服务端无法解析。
请求缺少有效身份认证凭证,或者携带的令牌已过期、签名失效。
数字付费保留状态码,常用于 SaaS 平台账户欠费、接口计费或微支付场景。
服务器已识别客户端身份,但鉴于访问控制规则(RBAC 角色等)拒绝授予访问权。
服务器无法在请求 URI 下定位到任何目标资源,路径可能错误或资源已不存在。
Web 开发中最著名、最高频的状态码。表明服务器无法在请求的端点地址检索到相匹配的页面或实体。在 REST API 中常用于指示在数据库中根据特定 ID 未查询到对应的业务数据。
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "Not Found",
"message": "Resource '/api/v1/orders/987123' does not exist"
}目标资源能识别请求路径,但不支持当前所采用的 HTTP 请求方法。
根据客户端请求头中的 Accept 条件,服务器无法提供满足其内容格式的资源表示。
客户端必须先向中间网络正向代理服务器完成身份鉴权后,方可转发请求。
客户端建立 TCP 连接后,在服务端预设的空闲等待时间内未能完整发送请求。
请求与目标资源的当前状态存在逻辑冲突,常见于并发乐观锁更新或唯一性校验失败。
目标资源已被有意且永久删除,未来不会恢复且不提供任何转发地址。
服务器拒绝在未定义 Content-Length 请求头的情况下接收并处理该请求。
请求头中指定的前置先决条件评估为 false,防止在非预期状态下覆盖或读取资源。
客户端上传的请求数据载荷超出了服务器或反向代理网关设定的容量上限。
请求行中的 URL 路径及 Query 查询参数长度超出了服务器所能解析的字符上限。
请求体的数据格式(Content-Type)或编码格式不被当前接口端点支持。
客户端 Range 请求头指定的字节偏移区间超出了目标文件的实际大小范围。
服务器无法满足客户端在 Expect 请求头中声明的特殊预期指示条件。
超文本咖啡壶控制协议 (HTCPCP) 愚人节标准彩蛋;现代常作为 API 开发者的趣味趣味响应。
请求被投递至无法为当前 Authority 域生成响应的服务节点(HTTP/2 连接复用错误)。
请求报文语法完全正确(如 JSON 合法),但其包含的业务指令或字段存在语义校验错误。
目标资源目前正处于被锁定状态,无法执行当前的写入、更新或删除指令。
当前请求因其所依赖的前序前置操作执行失败,导致无法继续进行。
服务器拒绝处理可能存在重放攻击风险的 TLS 1.3 早期数据 (0-RTT) 请求。
服务器拒绝使用当前老旧协议处理请求,要求客户端必须先协商升级至高阶协议。
要求源站请求必须提供前提条件(如 If-Match),以防止多人修改时产生丢失更新。
客户端在给定时间窗口内的请求速率超出了 API 网关或服务器预设的配额阈值。
单个请求头字段或全部请求头总长度超出了服务器所能处理的缓冲区上限。
由于政府法令、监管合规要求或法庭禁令导致该内容被依法屏蔽封禁。
Nginx 专有状态码。在服务端或上游应用完成计算前,客户端已提前断开 HTTP 连接。
服务器在处理请求时遭遇未处理的异常崩溃或代码逻辑错误,无法完成响应。
服务器不支持完成该请求所需的必要功能,无法识别所采用的 HTTP 请求方法。
反向代理或网关从上游后端应用服务接收到了无效响应、连接重置或崩溃。
服务器因瞬时超载、高并发流量峰值或计划内停机维护而暂时无法承载请求。
网关或反向代理未能在设定的超时时限内收到上游后端应用服务器的应答。
服务器不支持或拒绝支持客户端在请求行中声明的 HTTP 协议版本。
服务器内部透明内容协商协议配置错误,导致协商变体本身参与协商而陷入死循环。
服务器磁盘存储配额已耗尽,无法完成请求所需的资源持久化存储。
服务器在处理包含深度指示的 WebDAV 操作时,检测到了无限重定向或软链接循环。
客户端请求缺少必须的协议扩展指示声明,现已极少在现代系统中使用。
客户端需要先通过底层网络认证门户验证,方可获得互联网访问权限。
Cloudflare CDN 能够连通源站所在服务器,但源站 80/443 端口主动拒绝了 TCP 连接。
Cloudflare 边缘节点向源服务器发起 TCP 握手或 TLS 协商时未能及时得到应答。
| 分类代码 | 类别名称 | 核心语义与设计目的 | 典型客户端处理策略 | 高频代表状态码 |
|---|---|---|---|---|
| 1xx | 信息响应 (Informational) | 临时过渡状态,表示服务端已收到初始请求且正在处理,客户端应继续发送主体或协议切换。 | 继续推流发送请求头/请求体数据,或协商升级传输协议。 | 100, 101, 103 |
| 2xx | 成功响应 (Success) | 客户端请求已成功被服务端接收、理解并接受执行,业务操作按预期顺利达成。 | 解析响应正文数据,或确认后端业务逻辑已持久化写入完成。 | 200, 201, 204, 206 |
| 3xx | 重定向 (Redirection) | 客户端需执行进一步重定向跳转以完成请求,通常需跟进 Location 头或读取本地缓存。 | 向 Location 标头中指定的 URI 发起重定向跳转,或复用本地缓存。 | 301, 302, 304, 307, 308 |
| 4xx | 客户端错误 (Client Error) | 请求报文包含语法格式错误、身份未认证、权限不足或目标资源在服务端不存在。 | 修复请求载荷语法、补充合法鉴权 Token 或依据限流规则执行退避。 | 400, 401, 403, 404, 422, 429 |
| 5xx | 服务端错误 (Server Error) | 服务端在尝试处理合法请求时发生内部异常崩溃、超时或依赖不可用,无法生成响应。 | 结合退避算法(Backoff)适度重试,或向后台监控运维系统报警排查。 | 500, 502, 503, 504 |
401 Unauthorized:身份认证失败。客户端缺少有效凭证(缺少或失效的 Bearer Token、无效的 API Key)。重新附带合法凭据登录或刷新 Token 即可恢复正常访问。
403 Forbidden:访问授权失败。服务端已知晓并确认客户端身份,但根据权限规则(RBAC 角色不足、IP 访问控制名单、租户隔离),拒绝向该用户授权访问。即使使用相同身份反复重试也不会成功。
301 / 302(历史兼容):传统重定向模式。历史浏览器在遭遇 301(永久)或 302(临时)时,常常擅自将原始 POST 请求的方法篡改成 GET。
307 / 308(RFC 9110 现代规范):方法强保真重定向。307(临时)与 308(永久)强制要求客户端必须严格保留原始 HTTP 请求方法(POST 依旧为 POST),并完整重新提交原请求体。
500 Internal Server Error:应用代码自身抛出未捕获的运行时异常(空指针、类型转换异常、数据库宕机崩溃)。
502 Bad Gateway:反向代理(Nginx / Cloudflare)无法与上游后端建立有效连接,上游进程未监听或直接拒绝连接。
503 Service Unavailable:服务器处于临时维护窗口期或因并发激增触发限流熔断,搜索引擎会根据 Retry-After 推迟抓取而不扣减权重。
504 Gateway Timeout:反向代理成功连通上游应用,但上游处理业务(如慢查询、复杂计算)耗时超过了 proxy_read_timeout 阈值。
400 Bad Request:请求报文存在底层语法错误。如 JSON 语法损坏(缺少引号、多余逗号)、Query 参数编码混乱、或缺少必需的协议请求头。
422 Unprocessable Content:报文语法完全合法(JSON 格式完全正确),但字段内容违反了业务逻辑规则(如邮箱格式不合规、数值超出合法区间、关联 ID 不存在)。
| HTTP 请求方法 | CRUD 操作语义 | 是否幂等 (Idempotent) | 是否安全 (Safe) | 标准推荐成功状态码 | 标准常见错误状态码 |
|---|---|---|---|---|---|
| GET | 读取 / 查询资源 | 是 (Yes) | 是 (Yes) | 200 OK, 206 Partial | 404, 401, 403, 304 |
| POST | 创建资源 / 执行动作 | 否 (No) | 否 (No) | 201 Created, 202 Accepted | 400, 422, 409, 415 |
| PUT | 全量替换 / 幂等覆写 | 是 (Yes) | 否 (No) | 200 OK, 204 No Content | 400, 404, 412, 428 |
| PATCH | 增量部分更新 | 否 (No) | 否 (No) | 200 OK, 204 No Content | 400, 404, 422, 409 |
| DELETE | 删除 / 移除实体 | 是 (Yes) | 否 (No) | 204 No Content, 202 Accepted | 404, 401, 403 |
| HEAD | 仅获取响应头 (无正文) | 是 (Yes) | 是 (Yes) | 200 OK (无响应正文) | 404, 304 |
| OPTIONS | 跨域探测 / 能力协商 | 是 (Yes) | 是 (Yes) | 204 No Content, 200 OK | 405 Method Not Allowed |
HTTP 状态码是由服务器在响应客户端请求时下发的 3 位十进制数字代码,遵循 IETF RFC 9110 标准规范。状态码的首位数字明确划定了 5 种不同语义的响应类别:1xx 信息响应(Informational,请求已接收,仍在继续处理);2xx 成功响应(Success,操作已被服务器成功接收、理解并接受);3xx 重定向(Redirection,需客户端采取进一步跳转动作方可完成请求);4xx 客户端错误(Client Error,请求报文包含语法格式错误或无法被满足);5xx 服务端错误(Server Error,服务器在处理看似合法的请求时发生内部故障)。
两者的核心边界在于“身份认证(Authentication)”与“授权鉴权(Authorization)”的区别。401 Unauthorized 表示客户端未提供有效身份凭证(如缺少 Authorization 标头、Token 失效或 API Key 错误),客户端附带合法凭据重新发起认证即可解决问题;而 403 Forbidden 表示服务器已确切识别客户端身份,但根据安全策略与 RBAC 权限控制规则,该身份不具备访问受保护资源的权限(如普通成员尝试调用管理员专属接口),使用相同账号重复登录重试仍会被拒绝。
从 SEO 权重传递角度:301(Moved Permanently)与 308(Permanent Redirect)属于永久性重定向,搜索引擎爬虫会将原 URL 的权重(PageRank)完整迁移至新地址;302(Found)与 307(Temporary Redirect)属于临时重定向,不会转移 SEO 权重。从 HTTP 请求方法保持角度:历史浏览器实现中,客户端在收到 301 或 302 重定向时经常将原始 POST 请求错误篡改为 GET。为彻底杜绝方法篡改行为,RFC 9110 规范引入了 307(临时)与 308(永久),严格强制客户端重定向后必须保留原始请求方法与请求体(即 POST 必须保持 POST)。
500 Internal Server Error 属于应用层异常,通常是业务代码内部未捕获的异常崩溃、空指针或数据库连接崩溃;502 Bad Gateway 属于网关反向代理层故障,表明 Nginx/Cloudflare/ALB 尝试连接上游应用容器时,遭遇了连接拒绝(Connection Refused)或上游进程崩溃退出;503 Service Unavailable 表示服务暂时超载或正在停机维护,通常为熔断限流保护机制触发,常附带 Retry-After 标头;504 Gateway Timeout 表示反向代理与上游成功连通,但上游处理时间超出了代理配置的读取超时阈值(如执行了耗时过长的慢 SQL 查询)。
当请求报文存在底层语法错误导致服务端无法正确反序列化时(如 JSON 缺少闭合括号、多余逗号、非法字符编码或缺少必需的协议标头),应返回 400 Bad Request。当请求体语法格式完全合法(如 JSON 结构规整),但字段内容未能通过业务逻辑语义校验时(如邮箱不符合正则、年龄为负数、或关联的外键 ID 在数据库中不存在),根据 RFC 9110 §15.5.21 标准规范,应精准返回 422 Unprocessable Content。
404 Not Found 仅表明当前 URI 未匹配到资源,搜索引擎会假设该失效可能是暂时性或意外故障,因此爬虫未来仍会多次回访重试抓取;而 410 Gone 明确宣称“该资源曾存在但已被有意且永久下线,未来也不会提供任何跳转地址”。Googlebot、BaiduSpider 等主流搜索引擎爬虫在收到 410 后,会立即将该 URL 从搜索索引中彻底清除并停止后续抓取,有助于保护宝贵的整站抓取预算(Crawl Budget)。
POST(新建资源):推荐返回 201 Created 并附带指向新资源的 Location 标头;若加入异步队列处理则返回 202 Accepted。PUT 与 PATCH(更新资源):若返回最新数据表征则返回 200 OK;若无需返回响应体则返回 204 No Content。DELETE(删除资源):执行成功且无响应体时返回 204 No Content;若调度异步删除则返回 202 Accepted。当任意写请求遭遇数据校验失败时,统一返回 422 Unprocessable Content 并附带字段错误明细。
当客户端调用频次突破速率限制阈值时,服务端应返回 429 Too Many Requests(RFC 6585),并在响应头中附带 "Retry-After" 标头(标明需等待的秒数或恢复访问的 GMT 时间戳)。业界成熟的开放 API 还会同步提供 "X-RateLimit-Limit"(配额上限)、"X-RateLimit-Remaining"(剩余配额)以及 "X-RateLimit-Reset"(配额重置时间戳)标头,帮助客户端在触发熔断前提前自适应调节并发请求速率。
依据 RFC 9110 与 RFC 9111 HTTP 缓存规范,状态码 200 (OK)、203 (Non-Authoritative Information)、204 (No Content)、206 (Partial Content)、300 (Multiple Choices)、301 (Moved Permanently)、404 (Not Found)、405 (Method Not Allowed)、410 (Gone)、414 (URI Too Long) 以及 501 (Not Implemented) 在未显式声明禁止缓存的情况下,默认均允许被客户端和代理缓存,除非响应中被 Cache-Control: no-store / private 等指令覆盖。
IETF RFC 9457(前身为 RFC 7807)正式确立了 "Problem Details for HTTP APIs" 标准规范(Content-Type: application/problem+json)。与各团队随意的自定义错误格式不同,合规 API 统一使用规范约定的 5 个标准字段:type(指示错误类别的 URI)、title(简短的错误类型可读摘要)、status(对应的 HTTP 状态码数值)、detail(针对当前具体出错实例的详细解释)以及 instance(标识本次错误事件的唯一 URI 跟踪标识)。