HTTP 状态码解析 - 1xx 信息性响应 (HTTP Status Codes - 1xx Informational)
🚦 第一章:HTTP 状态码 - 1xx 信息性响应
“请求已接收,继续处理… 🚦 1xx 状态码是服务器的低语,告知客户端一切按计划进行中。”
欢迎来到 HTTP 状态码系列的第一章。在本章中,我们将深入探讨 1xx(信息性响应)状态码。这些状态码表示请求已被接收,并且处理过程正在继续。
📜 1xx 状态码概览
1xx 范围内的状态码是临时的,并且是在 HTTP/1.1 中引入的。它们告诉客户端请求的初始部分已被接收,客户端应该继续发送请求的其余部分,或者如果请求已经完成,则忽略此响应。
常见的 1xx 状态码
- 100 Continue: 服务器已接收到请求的初始部分,客户端应继续发送请求的其余部分。如果请求已完成,则忽略此响应。
- 场景:客户端发送了一个带有
Expect: 100-continue
头部的请求。
- 场景:客户端发送了一个带有
- 101 Switching Protocols: 服务器根据客户端的
Upgrade
请求头正在切换协议。- 场景:客户端请求升级到 WebSocket 协议。
- 102 Processing (WebDAV): 服务器已收到并正在处理请求,但尚未有响应可用。
- 场景:用于 WebDAV 请求,防止客户端超时,因为请求可能需要较长时间处理。
- 103 Early Hints: 主要用于允许用户代理在服务器仍在准备响应时开始预加载资源。
- 场景:服务器希望在发送最终响应之前,提示浏览器预加载一些 CSS 或 JavaScript 文件。
🤔 何时关注 1xx 状态码?
对于大多数 Web 开发和日常浏览,1xx 状态码通常在幕后处理,用户或开发者很少直接与之交互。然而,在以下情况下,了解它们可能会有所帮助:
- 性能优化:
103 Early Hints
可以帮助提升页面加载性能。 - 协议升级:在处理像 WebSockets 这样的协议时,
101 Switching Protocols
至关重要。 - 大文件上传:
100 Continue
机制可以优化大文件上传的效率,允许服务器在接收整个文件之前拒绝请求。
🛠️ 实践中的 1xx
虽然你可能不会每天都直接调试 1xx 状态码,但理解它们在 HTTP 通信中的作用有助于构建更健壮和高效的应用程序。
例如,在使用 curl
时,你可以观察到 100 Continue
的行为:
curl -v --data "large data payload" http://example.com/upload -H "Expect: 100-continue"