Origin spec表示Origin
标头可能设置为“null”。这通常在请求来自用户计算机上的文件而不是来自托管网页时完成。该规范还声明,如果请求来自“隐私敏感”上下文,则Origin可以为null。
我的问题:什么是“隐私敏感”环境,是否有任何浏览器表现出这种行为?
这是来自Origin spec的完整措辞:
每当用户代理发出来自的HTTP请求时 “隐私敏感”上下文,用户代理必须发送值“null” 在Origin标题字段中。
注意:本文档未定义隐私敏感的概念 上下文。生成HTTP请求的应用程序可以指定 作为隐私敏感的上下文对用户的方式施加限制 代理生成Origin头字段。
答案 0 :(得分:44)
我终于找到了答案。至少还有一种情况是Origin
标题可能为“null”。在CORS请求期间执行重定向时,如果请求被重定向到其他服务器上的URL,则Origin
标头将更改为“null”。我认为这被认为是“隐私敏感的上下文”,因为浏览器不希望将原始资源泄漏到新服务器,因为客户端可能不打算首先向新服务器发出请求。 / p>
答案 1 :(得分:3)
点击此处:https://bugs.chromium.org/p/chromium/issues/detail?id=154967
通过strobe@google.com
此行为实际上在spec [1]中。 请参阅第7.1.7节 6。强>
不幸的是传输字符串" null"让它看起来像是一个bug;我自己这么想,直到我追踪到这一点:)
我们可能会更好地在检查员中解释这个问题:
http://www.w3.org/TR/cors/#generic-cross-origin-request-algorithms
答案 2 :(得分:1)
我有类似的情况,在域A-> B中进行ajax重定向,最后回到A.由于origin为null,CORS失败。
在域A上我设置了Access-Control-Allow-Origin:null,这似乎有用,需要测试更多。
答案 3 :(得分:1)
还有其他一些与iframe相关的情况,它们可能导致null
origin
:https://webdbg.com/test/sandbox/frames.htm