103 Early Hints

HTTP 103 Early Hints 資訊性響應可能由伺服器在仍在準備響應時傳送,其中包含伺服器預期最終響應將連結到的站點和資源的提示。這允許瀏覽器在伺服器準備併發送最終響應之前,預連線到站點或開始預載入資源。由早期提示指示的預載入資源在客戶端收到提示後立即被獲取。

早期提示響應主要用於 Link 標頭,該標頭指示要載入的資源。它還可以包含一個 Content-Security-Policy 標頭,該標頭在處理早期提示時強制執行。

伺服器可能會發送多個 103 響應,例如,在重定向之後。瀏覽器僅處理第一個早期提示響應,如果請求導致跨域重定向,則必須丟棄此響應。

注意:出於相容性和安全原因,建議僅透過 HTTP/2 或更高版本傳送 HTTP 103 Early Hints 響應,除非已知客戶端能夠正確處理資訊性響應。

大多數瀏覽器為此原因將支援限制在 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/my-font.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 狀態碼
# 早期提示
HTML
# 早期提示

瀏覽器相容性

另見