Str*_*Kid 2 javascript security iframe same-origin-policy
我已经为通过iframe嵌入到报表中的SAP解决方案(无论如何)制作了一个组件.在SAP平台(BO)上部署报告后,我收到了此错误(在Chrome上,但在IE或FF上也不起作用):
Uncaught SecurityError: Blocked a frame with origin "http://support.domain.com" from accessing a frame with origin "http://support.domain.com". The frame requesting access set "document.domain" to "domain.com", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access.
Run Code Online (Sandbox Code Playgroud)
iframe嵌入到我的组件中,因此它假设在与报告相同的端口上运行.
我发现这个职位上的SO这一个,但它并没有真正帮助我明白我需要做的.
有没有办法摆脱这个,或至少解决这个问题?谢谢 :).
编辑:
主机页面URL:http://support.domain.com/BOE/OpenDocument/opendoc/openDocument.jsp? sIDType = CUID&iDocID = AbmffWLjCAlFsLj14TjuDWg
在iframe上调用属性的文件的URL(并生成错误):http://support.domain.com/BOE/OpenDocument/1411281523/zenwebclient/zen/mimes/sdk_include/com.domain.ds.extension/res /cmp/js/component.js
框架的网址:http: //support.domain.com/BOE/OpenDocument/1411281523/zenwebclient/zen/mimes/sdk_include/com.domain.ds.extension/res/cmp/js/map/js/map.html
iframe嵌入了一些脚本标记,我可以在控制台的网络标记中看到所有内容都正常加载.
也许它可以帮助.
编辑2:
我刚刚意识到SAP报告本身嵌入了iframe.这意味着我的iframe在iframe中,这可能是问题所在.但是,当从Eclipse推出报告时,一切正常.
我终于找到了解决方案.
我的iframe的顶部有一个domain.location设置为domain.com和我的iframe domain.location设置为support.domain.com.
事件虽然我仍然认为两者都属于同一个域,浏览器似乎不喜欢它.
重新设置domain.location完成了工作.
要回答询问如何重新设置的问题location.domain,以下是我的团队过去使用的代码片段.这是相当古老的(2年前),没有真正优化,我们不再使用它,但我想这值得分享.基本上,我们正在做的是加载iframe在URL参数中传递顶级域名.
var topDomain = (function handleDomain(parameters) {
if (typeof parameters === "undefined") {
return;
}
parameters = parameters.split("&");
var parameter = [],
domain;
for (var i = 0; i<parameters.length; ++i) {
parameter.push(parameters[i]);
}
for (var j = 0; j<parameter.length; ++j) {
if (parameter[j].indexOf("domain") > -1) {
domain = parameter[j];
break;
}
}
if (typeof domain !== "undefined") {
domain = domain.split("=");
return domain[1];
}
return;
})(window.location.search),
domain = document.domain;
if (domain.indexOf(topDomain) > -1 && domain !== topDomain) {
document.domain = topDomain;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63291 次 |
| 最近记录: |