Sec-Purpose

Sec-Purpose 获取元数据请求头 指示请求资源将用于何种目的,当该目的并非用户代理立即使用时。

目前唯一定义的目的为 prefetch,表示正在请求资源以预期将来可能需要它,例如搜索结果中链接的页面或用户悬停其上的链接。服务器可以使用此信息来:调整请求的缓存过期时间、拒绝请求,或者在计算页面访问量时以不同方式处理它。

当加载具有 <link> 元素(该元素具有属性 rel="prefetch")的页面时,会发送此头信息。请注意,如果设置了此头信息,则请求中的 Sec-Fetch-Dest 头信息必须设置为 empty<link> 属性 as 中的任何值都将被忽略),并且 Accept 头信息应与正常导航请求中使用的值匹配。

头信息类型 获取元数据请求头
禁止的头信息名称 是(前缀为 Sec-
CORS 安全列表请求头

语法

http
Sec-Purpose: prefetch

指令

允许的令牌为

prefetch

目的是预取在未来可能的导航中可能需要的资源。

示例

预取请求

考虑浏览器加载一个文件的情况,该文件包含一个 <link> 元素,该元素具有属性 rel="prefetch" 和一个包含图像文件地址的 href 属性。生成的 fetch() 应导致一个 HTTP 请求,其中 Sec-Purpose: prefetchSec-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 错误 1836334 中跟踪。

规范

规范
获取标准
# sec-purpose-header
预取
# sec-purpose-header

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅