我有一个项目,我尝试从数据处理程序以制表符分隔值格式下载某些数据但是,Google Chrome正在为Origin标头值发送空值。
&#xA;&#xA; &#xA;&#xA; < pre> var url ='http://server.corp.somebiz.com/DataHandlers/ReportSets.ashx?task=pagerequestsovertime&app=188d1956-c4a7-42f7-9bdd-38f54c14e125&format=tsv'; xA;&#xA; d3.tsv(url,function(d){&#xA; d.date = parseTime(d.date);&#xA; d.close = + d.close;&#xA; return d;&#xA;},函数(错误,数据){&#xA; if(错误)抛出错误;&#xA;&#xA; console.log('Do stuff');&#xA;}) ;&#xA;
&#xA;&#xA; 以下是请求中的原始标题:
&#xA;&#xA; GET /DataHandlers/ReportSets.ashx?task=pagerequestsovertime&app=786b5ef3-1389-4890-8004-533fd1f66f16&format=tsv HTTP / 1.1&#xA;主持人:server.corp.somebiz.com&#xA ;连接:keep-alive&#xA; accept:text / tab-separated-values,* / *&#xA; Origin:null&#xA; User-Agent:Mozilla / 5.0(Windows NT 6.1; Win64平台; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 58.0.3029.110 Safari / 537.36&#xA;接受编码:gzip,deflate,sdch&#xA;接受语言:en-US,en; q = 0.8&# xA;
&#xA;&#xA;
这以控制台上的错误结束:
&#xA;&#xA; XMLHttpRequest不能加载http://server.corp.somebiz.com/DataHandlers/ReportSets.ashx?task=pagere...6ac42b7-ba6f-4be4-b297-758ebc9fe615&start=2/1/2017&end=3/2/2017&format = TSV。 “Access-Control-Allow-Origin”标题的值为“http://server.corp.somebiz.com”,不等于提供的来源。因此不允许原点'null'访问。&#xA;
&#xA;&#xA; 我不仅在寻找发生这种情况的原因,条件是什么导致Chrome向服务器发送空的Origin标头。
&#xA;&#xA;这似乎是Chrome特定的问题,因为Internet Explorer 11正在向服务器发送正确的Origin值。 / p>&#xA;&#xA;
更新:添加另一个皱纹,这可能是也可能不是促成因素。
&#xA;&#xA;我加载了呼叫&lt; iframe&gt;
元素中的页面,用于隔离脚本元素。在iframe外部调用页面会导致不同的行为,Chrome上的Origin标头完全丢失。
答案 0 :(得分:1)
如果您加载调用页面的iframe
的{{1}}属性不包含值sandbox
,browsers give it a “unique” origin:
设置[
allow-same-origin
]属性后,内容将被视为来自唯一的来源,表单,脚本,并禁用各种可能令人讨厌的API,阻止链接定位到其他浏览上下文和插件是安全的。sandbox
关键字会将内容视为来自其真实来源,而不是将其强制转换为唯一来源
...并且在确定要在跨源请求中发送的allow-same-origin
标头的值时,浏览器会将任何唯一来源序列化为Origin
,并为null
标头提供该值。< / p>