对于使用沙箱属性

时间:2017-06-26 16:30:32

标签: javascript google-chrome d3.js xmlhttprequest cross-domain

我有一个项目,我尝试从数据处理程序以制表符分隔值格式下载某些数据但是,Google Chrome正在为Origin标头值发送空值。





当我导航到 http://server.corp.somebiz.com/reportpages/Report_Page_Requests_Over_Time.aspx?app=76ac42b7-ba6f-4be4-b297-758ebc9fe615

&#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标头完全丢失。

&#xA;

1 个答案:

答案 0 :(得分:1)

如果您加载调用页面的iframe的{​​{1}}属性不包含值sandboxbrowsers give it a “unique” origin

  

设置[allow-same-origin]属性后,内容将被视为来自唯一的来源,表单,脚本,并禁用各种可能令人讨厌的API,阻止链接定位到其他浏览上下文和插件是安全的。 sandbox关键字会将内容视为来自其真实来源,而不是将其强制转换为唯一来源

...并且在确定要在跨源请求中发送的allow-same-origin标头的值时,浏览器会将任何唯一来源序列化为Origin,并为null标头提供该值。< / p>

相关问题