Sec-Fetch-Site 请求头
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 |
浏览器兼容性
加载中…
另见
Sec-Fetch-Mode
、Sec-Fetch-User
、Sec-Fetch-Dest
Fetch 元数据请求头- 使用 Fetch 元数据保护你的资源免受网络攻击 (web.dev)
- Fetch 元数据请求头操场 (secmetadata.appspot.com)