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>
元素