cbd*_*per 11 same-origin-policy http-headers cors fetch-api sec-fetch-site
我有一个API从我的 React 应用程序调用的端点。那API是在同一个域上。就像是:
https://www.example.com
https://www.example.com/api/update-something
Run Code Online (Sandbox Code Playgroud)
我曾经这样cross-fetch做过这个要求。
我希望Origin在我的服务器日志上看到一个标头。事实上,我很期待看到Origin: https://www.example.com。
但这是我得到的:
Origin: undefined
// AND I ALSO GET THESE HEADERS
"sec-fetch-dest":"empty",
"sec-fetch-mode":"cors",
"sec-fetch-site":"same-origin"
Run Code Online (Sandbox Code Playgroud)
他们的意思是什么?好像Origin已经查过了?
例如:如果我得到sec-fetch-site: cross-site它意味着调用是在另一个网站/域中生成的?那是对的吗?
参考:
Sec-Fetch-Site: cross-site
Sec-Fetch-Site: same-origin
Sec-Fetch-Site: same-site
Sec-Fetch-Site: none
Run Code Online (Sandbox Code Playgroud)
sid*_*ker 26
\n\n我有一个从 React 应用程序调用的 API 端点。该 API 位于同一域中。\xe2\x80\xa6 我希望
\nOrigin在我的服务器日志上看到一个标头。
根据 Fetch 规范要求,浏览器不会发送Origin同源GET请求。\xe2\x9c\xb3\xef\xb8\x8f
\n\n就像已经进行了 Origin 检查
\n
是的 \xe2\x80\x94 浏览器知道:
\n\xe2\x80\xa6和浏览器在决定是否添加Origin标头之前检查所有这些;Origin如果来源匹配且方法为 ,则它们不会添加标头GET。
\n\nRun Code Online (Sandbox Code Playgroud)\n// AND I ALSO GET THESE HEADERS\n"sec-fetch-dest":"empty",\n"sec-fetch-mode":"cors",\n"sec-fetch-site":"same-origin"\n他们的意思是什么?\xe2\x80\xa6 例如:如果我得到
\nsec-fetch-site: cross-site它意味着调用是在另一个网站/域中生成的?那是对的吗?
https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header有详细信息:
\n| Sec-Fetch-Site 值 | 该值表示什么 |
|---|---|
| 同源 | 发出请求的来源与发出请求的代码的来源相匹配。 |
| 同站点 | 发出请求的来源和发出请求的代码的来源具有相同的\xe2\x80\x9c 可注册域\xe2\x80\x9d(有时也称为\xe2\x80\x9csame eTLD+1 \xe2\x80\x9d或\xe2\x80\x9c 相同有效顶级域加一\xe2\x80\x9d ); 例如,https://subdomain.example.com和https://example.com是同站点的(即使不是同源的)。 |
| 跨站点 | 发出请求的来源和发出请求的代码的来源既不是同一来源,也不是同一站点,而是具有不同的可注册域。 |
| 没有任何 | 该请求不是由前端代码以编程方式发起的(例如,不是通过 XHR/fetch/ajax 调用),而是由普通用户导航 \xe2\x80\x94 发起,即由用户执行类似的操作直接将地址输入浏览器地址栏,或单击超链接。 |
\xe2\x9c\xb3\xef\xb8\x8f 规范要求导致Origin同源GET请求中省略标头:
是否Origin添加标头最终取决于 request\xe2\x80\x99s \xe2\x80\x9cresponse tainting\xe2\x80\x9d,其值以“ basic”开头,对于同源请求,根据\xe2\x80\x9cMain fetch\xe2\x80\x9d 算法basic的第 12 步,Fetch 算法保持设置为“ ” :
\n\n\xe2\x86\xaa请求\xe2\x80\x99s 当前 url\xe2\x80\x99s 源与请求\xe2\x80\x99s\norigin相同,并且请求\xe2\x80\x99s 响应污染为 "
\nbasic"
\ n\xe2\x80\xa6\n
\n- 将 request\xe2\x80\x99s 响应污染设置为“
\nbasic”。- 返回运行给定fetchParams的方案 fetch的结果。
\n
运行schema fetch会导致调用追加请求“Origin”标头算法,并且Origin只有在满足以下至少一项条件时才会添加标头:
cors”websocket”GET是HEAD但是对于 same-origin GET,响应污染是 \xe2\x80\x99t cors(更确切地说,根据上面的要求,它是 \xe2\x80\x99s basic),请求模式是 \xe2\x80\x99t websocket,当然方法是\xe2\x80\x99t 既不也不GET( HEADit\xe2\x80\x99s GET); 因此,该算法要求浏览器不添加Origin标头。
| 归档时间: |
|
| 查看次数: |
44970 次 |
| 最近记录: |