Sec-Fetch-Site

基线 2023

新功能

2023 年 3 月起,此功能在最新的设备和浏览器版本中均可使用。此功能可能在旧设备或浏览器中无法使用。

Sec-Fetch-Site fetch 元数据请求头 指示请求发起者源与请求资源源之间的关系。

换句话说,此头告诉服务器,对资源的请求来自同一个源、同一个站点、不同的站点,还是“用户发起”的请求。然后,服务器可以使用此信息来决定是否应允许该请求。

同一源请求通常默认允许,但来自其他源的请求是否被接受可能会进一步取决于正在请求的资源,或其他 fetch 元数据请求头 中的信息。默认情况下,未被接受的请求应使用 403 响应代码拒绝。

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

语法

http
Sec-Fetch-Site: cross-site
Sec-Fetch-Site: same-origin
Sec-Fetch-Site: same-site
Sec-Fetch-Site: none

指令

跨站点

请求发起者和托管资源的服务器具有不同的站点(即“potentially-evil.com”对“example.com”上的资源的请求)。

同一源

请求发起者和托管资源的服务器具有相同的 (相同的方案、主机和端口)。

同站

请求发起者和托管资源的服务器具有相同的 站点,包括方案。

此请求是用户发起的操作。例如:在地址栏中输入 URL、打开书签或将文件拖放到浏览器窗口中。

示例

来自 https://mysite.example 上网页(具有相同的端口)对 https://mysite.example/foo.json 的 fetch 请求是同一源请求。浏览器将生成如下所示的 Sec-Fetch-Site: same-origin 头,服务器通常会允许该请求。

http
GET /foo.json
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

来自另一个站点(例如 potentially-evil.com)对同一 URL 的 fetch 请求会导致浏览器生成不同的头(例如 Sec-Fetch-Site: cross-site),服务器可以选择接受或拒绝该请求。

http
GET /foo.json
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site

规范

规范
获取元数据请求头
# sec-fetch-site-header

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅