103 早期提示

HTTP 的 103 Early Hints 信息响应 可以由服务器在准备响应时发送,其中包含关于服务器预期最终响应将链接到的站点和资源的提示。这允许浏览器在服务器准备并发送最终响应之前 预连接 到站点或开始 预加载 资源。由早期提示指示的预加载资源将在收到提示后立即由客户端获取。

早期提示响应主要用于与 Link 标头一起使用,该标头指示要加载的资源。它可能还包含一个 Content-Security-Policy 标头,该标头在处理早期提示时强制执行。

服务器可能会发送多个 103 响应,例如,在重定向之后。浏览器只处理第一个早期提示响应,如果请求导致跨域重定向,则必须丢弃此响应。

注意:出于兼容性和安全原因,建议 [仅通过 HTTP/2 或更高版本发送 HTTP 103 Early Hints 响应]((https://www.rfc-editor.org/rfc/rfc8297#section-3),除非已知客户端可以正确处理信息响应。

出于这个原因,大多数浏览器将支持限制为 HTTP/2 或更高版本。请参阅下面的 浏览器兼容性。尽管如此,以下示例使用 HTTP/1.1 样式表示法,这与通常的约定一致。

语法

http
103 Early Hints

示例

预连接示例

以下 103 早期提示响应显示了一个早期提示响应,其中服务器指示客户端可能希望预连接到特定来源 (https://cdn.example.com)。就像 HTML 的 rel=preconnect 属性一样,这是一个提示,表示该页面很可能需要来自目标资源来源的资源,并且浏览器可以通过抢先启动与该来源的连接来改善用户体验。

http
103 Early Hint
Link: <https://cdn.example.com>; rel=preconnect, <https://cdn.example.com>; rel=preconnect; crossorigin

此示例预连接到 https://cdn.example.com 两次

  • 第一个连接将用于加载可以无需 CORS 获取的资源,例如图像。
  • 第二个连接包含 crossorigin 属性,并将用于加载 CORS 受保护的资源,例如字体。

CORS 受保护的资源必须通过完全独立的连接获取。如果只需要来自一个来源的一种类型的资源,则只需预连接一次。

随后,服务器发送最终响应。这包括一个跨域字体预加载和一个从附加来源加载的 <img>

http
200 OK
Content-Type: text/html

<!DOCTYPE html>
...
<link rel="preload" href="https://cdn.example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin>
...
<img src="https://cdn.example.com/images/image.jpg" alt="">
...

预加载示例

以下 103 早期提示响应指示最终响应可能需要样式表 style.css

http
103 Early Hint
Link: </style.css>; rel=preload; as=style

随后,服务器发送最终响应。这包括一个指向样式表的链接,该链接可能已经从早期提示中预加载。

http
200 OK
Content-Type: text/html

<!DOCTYPE html>
...
<link rel="stylesheet" rel="preload" href="style.css" />
...

包含 CSP 的早期提示响应

以下示例显示了相同的早期提示响应,但包含 Content-Security-Policy 标头。

http
103 Early Hint
Content-Security-Policy: style-src: self;
Link: </style.css>; rel=preload; as=style

早期响应将预加载限制为与请求相同的来源。如果来源匹配,则将预加载样式表。

最终响应可能会将 CSP 设置为 none,如下所示。样式表已经预加载,但在渲染页面时不会使用。

http
200 OK
Content-Security-Policy: style-src: none;
Content-Type: text/html

<!DOCTYPE html>
...
<link rel="stylesheet" rel="preload" href="style.css" />
...

规范

规范
指示提示的 HTTP 状态代码
# early-hints
HTML 标准
# early-hints

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅