Sec-Fetch-Site 请求头

Baseline 已广泛支持

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

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

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

通常情况下,同源请求会默认被允许,但来自其他源的请求如何处理可能进一步取决于所请求的资源,或另一个 Fetch 元数据请求头中的信息。默认情况下,不被接受的请求应以 403 响应码拒绝。

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

语法

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

指令

跨站(cross-site)

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

same-origin

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

same-site

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

none

此请求是用户发起的某个操作。例如:在地址栏中输入 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

规范

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

浏览器兼容性

另见