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 表格僅在瀏覽器中載入

另請參閱