1xx 信息性状态码用作中间响应,用于提供连接状态更新,而不完成请求-响应周期。这些代码并非用于最终操作,而是用于指示请求正在处理中或需要额外步骤。
服务器在响应客户端请求时发送 1xx 信息性状态码必须遵循的要求包括:
- 响应必须以状态行后的第一个空行终止。
- HTTP/1.0 不支持 1xx 响应;源站服务器绝不应向 HTTP/1.0 客户端发送 1xx 响应。
Cloudflare 会转发源站服务器的所有 1xx 响应,但不会直接生成这些响应。
100 Continue 状态表示服务器已收到请求头,并准备好让客户端发送请求体。更多信息请参阅 RFC 7231 ↗。
允许客户端在发送可能较大或不可用的请求体之前,验证服务器是否会接受其请求头,从而优化数据流。
当客户端包含 Expect: 100-continue 标头时,表示在发送请求体之前请求确认,提示服务器立即以 100 Continue 继续,或以适当的状态码响应(例如 401 Unauthorized 或 413 Payload Too Large)表示请求不可接受。
Cloudflare 使用 Keep-Alive 连接来维持客户端与服务器之间的持久通信,因此通常不需要 100 Continue 响应,因为 Keep-Alive 可减少开销并消除中间确认的需要。
101 Switching Protocols 状态码表示源站服务器接受客户端切换协议的请求。更多信息请参阅 RFC 7231 ↗。
101 Switching Protocols 状态码表示服务器已接受客户端更改协议的请求,方式可以是包含 Upgrade 标头,或更改连接上的应用协议。使用 Upgrade 标头时,服务器同意切换到客户端优先级列表中更高的协议,并以 Upgrade 标头响应以指定新协议。此更改被假定对客户端和服务器均有益,最常见的用例是 WebSockets。
Cloudflare 支持 WebSocket 连接,其中经常涉及 101 Switching Protocols 状态码。协议切换允许客户端建立 WebSocket 连接,以实现实时双向通信。有关 Cloudflare WebSockets 的信息,请参阅 Cloudflare Now Supports Websockets ↗。
102 Processing 状态码表示服务器已收到请求且正在处理,但最终响应尚未就绪。此状态码仅适用于 HTTP/1.1 及更高版本。更多信息请参阅 RFC 2518 ↗。
102 Processing 状态码常用于需要长时间运行的场景,例如复杂数据库事务或大型文件处理。它有助于在通常超过 20 秒的扩展处理时间内维持连接,确保客户端与服务器在整个操作期间高效通信。
如果 Cloudflare 收到 102 Processing 响应,它期望在 125 秒内收到最终响应。未能收到该响应会导致 错误 522:连接超时。但是,发送中间 102 Processing 响应有助于防止 错误 524:发生超时,确保服务器处理请求时连接保持活跃。