Sec-Purpose 頭
HTTP Sec-Purpose 獲取元資料請求頭 表示請求資源將被使用的目的,當該目的不是使用者代理立即使用時。
目前唯一定義的目的是 prefetch,它表示正在請求資源,以預期在不久的將來可能需要導航到的頁面會用到該資源,例如搜尋結果中的連結頁面或使用者懸停的連結。伺服器可以利用這些資訊來:調整請求的快取過期時間、拒絕請求,或者在計算頁面訪問量時以不同的方式處理它。
當頁面載入時,如果包含帶有屬性 rel="prefetch" 的 <link> 元素,則會發送此頭。請注意,如果設定了此頭,則請求中的 Sec-Fetch-Dest 頭必須設定為 empty(<link> 屬性 as 中的任何值都將被忽略),並且 Accept 頭應與正常導航請求使用的值匹配。
| 頭型別 | Fetch 元資料請求頭 |
|---|---|
| 禁止請求頭 | 是 (Sec- 字首) |
| CORS 安全列表請求頭 | 否 |
語法
http
Sec-Purpose: prefetch
指令
允許的令牌是
prefetch-
目的是預取在未來可能的導航中可能需要的資源。
示例
預取請求
考慮這樣一個情況:瀏覽器載入一個檔案,其中包含一個帶有屬性 rel="prefetch" 和包含影像檔案地址的 href 屬性的 <link> 元素。由此產生的 fetch() 應該導致一個 HTTP 請求,其中 Sec-Purpose: prefetch、Sec-Fetch-Dest: empty,以及與瀏覽器用於頁面導航的 Accept 值相同。
下面給出了此類頭的一個示例(在 Firefox 上)
http
GET /images/some_image.png HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-Purpose: prefetch
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
注意:在撰寫本文時,Firefox 錯誤地將預取請求的 Accept 頭設定為 Accept: */*。該示例已修改,以顯示 Accept 值應為何值。此問題可在 Firefox bug 1836334 中跟蹤。
規範
| 規範 |
|---|
| Fetch # sec-purpose-header |
| 預取 # sec-purpose-header |
瀏覽器相容性
載入中…
另見
Sec-Fetch-Dest,Sec-Fetch-Mode,Sec-Fetch-Site,Sec-Fetch-User獲取元資料請求頭- 預取(詞彙表)
- 帶有屬性
rel="prefetch"的<link>元素