如何从iframe克服同源策略?

时间:2014-02-21 17:07:05

标签: javascript iframe same-origin-policy allow-same-origin

我基本上试图在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托管在父域上也是如此。

还有其他办法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

您正在寻找postMessage,请在此处阅读:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

编辑:对不起,没有看到所有评论说同样的事情

答案 1 :(得分:1)

绕过这个策略的另一个有趣的方法是劫持子窗口.location.hash,因为它对两个脚本引擎都是可见的。