Sec-Fetch-Dest 头

Baseline 广泛可用 *

此功能已成熟,并可在许多设备和浏览器版本上运行。自 2023 年 3 月以来,它已在各种浏览器中可用。

* 此特性的某些部分可能存在不同级别的支持。

HTTP Sec-Fetch-Dest Fetch 元数据请求头指示请求的“目的地”。即原始 fetch 请求的发起者,也就是所获取数据将被使用的地方(以及方式)。

这允许服务器根据请求的预期用途是否合适来决定是否响应请求。例如,目标为 audio 的请求应该请求音频数据,而不是其他类型的资源(例如,包含敏感用户信息的文档)。

头类型 Fetch 元数据请求头
禁止请求头 是 (Sec- 前缀)
CORS 安全列表请求头

语法

http
Sec-Fetch-Dest: audio
Sec-Fetch-Dest: audioworklet
Sec-Fetch-Dest: document
Sec-Fetch-Dest: embed
Sec-Fetch-Dest: empty
Sec-Fetch-Dest: fencedframe
Sec-Fetch-Dest: font
Sec-Fetch-Dest: frame
Sec-Fetch-Dest: iframe
Sec-Fetch-Dest: image
Sec-Fetch-Dest: manifest
Sec-Fetch-Dest: object
Sec-Fetch-Dest: paintworklet
Sec-Fetch-Dest: report
Sec-Fetch-Dest: script
Sec-Fetch-Dest: serviceworker
Sec-Fetch-Dest: sharedworker
Sec-Fetch-Dest: style
Sec-Fetch-Dest: track
Sec-Fetch-Dest: video
Sec-Fetch-Dest: webidentity
Sec-Fetch-Dest: worker
Sec-Fetch-Dest: xslt

如果此头包含任何其他值,服务器应忽略此头。

指令

注意:这些指令对应于 Request.destination 返回的值。

audio

目标是音频数据。这可能源自 HTML <audio> 标签。

audioworklet

目标是为 audio worklet 使用而获取的数据。这可能源自对 audioWorklet.addModule() 的调用。

document

目标是文档(HTML 或 XML),并且该请求是用户发起的顶级导航的结果(例如,用户点击链接导致的结果)。

嵌入

目标是嵌入内容。这可能源自 HTML <embed> 标签。

empty

目标是空字符串。这用于没有自己值的目标。例如:fetch()navigator.sendBeacon()EventSourceXMLHttpRequestWebSocket 等。

fencedframe 实验性

目标是围栏帧

font

目标是字体。这可能源自 CSS @font-face

frame

目标是帧。这可能源自 HTML <frame> 标签。

iframe

目标是 iframe。这可能源自 HTML <iframe> 标签。

图片

目标是图像。这可能源自 HTML <img>、SVG <image>、CSS background-image、CSS cursor、CSS list-style-image 等。

manifest

目标是清单。这可能源自 HTML <link rel=manifest>

object

目标是对象。这可能源自 HTML <object> 标签。

paintworklet

目标是 paint worklet。这可能源自对 CSS.PaintWorklet.addModule() 的调用。

report

目标是报告(例如,内容安全策略报告)。

script

目标是脚本。这可能源自 HTML <script> 标签或对 WorkerGlobalScope.importScripts() 的调用。

serviceworker

目标是 service worker。这可能源自对 navigator.serviceWorker.register() 的调用。

sharedworker

目标是 shared worker。这可能源自 SharedWorker

style

目标是样式。这可能源自 HTML <link rel=stylesheet> 或 CSS @import

track

目标是 HTML 文本轨道。这可能源自 HTML <track> 标签。

video

目标是视频数据。这可能源自 HTML <video> 标签。

webidentity

目标是与验证用户身份相关的端点。例如,它在 FedCM API 中用于验证身份提供商 (IdP) 端点的真实性,防止 CSRF 攻击。

worker

目标是 Worker

xslt

目标是 XSLT 转换。

示例

使用 Sec-Fetch-Dest

<img> 元素生成的跨站请求将导致具有以下 HTTP 请求头的请求(注意目的地是 image

http
Sec-Fetch-Dest: image
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site

规范

规范
Fetch 元数据请求头
# sec-fetch-dest-header

浏览器兼容性

另见