我基本上试图在Iframe中显示属于同一组织但托管在不同域名上的第二个网站。我正试图将iframe中的一些数据传递给父框架。
父框架= foo.com,
iframe = bar.com
如果我尝试通过parent.setData( data )
从iframe传递数据,则会产生同源政策错误。
所以我围绕这个代码创建了一个包装器,托管在foo.com/js/wrapper.js
,包含了这个函数:
var Foo = {};
Foo.setData = function(data)
{
parent.setData(data);
}
现在bar.com
上的iframe正在执行:
<script src="http://foo.com/js/wrapper.js"></script>
<script>
Foo.setData( someData );
</script>
但是,即使这样在parent.setData
行上出现安全错误,即使wrapper.js
托管在父域上也是如此。
还有其他办法可以解决这个问题吗?
答案 0 :(得分:5)
您正在寻找postMessage
,请在此处阅读:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
编辑:对不起,没有看到所有评论说同样的事情
答案 1 :(得分:1)
绕过这个策略的另一个有趣的方法是劫持子窗口.location.hash,因为它对两个脚本引擎都是可见的。