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"