【问题标题】:Accessing parent window variable from an cross-domain iframe从跨域 iframe 访问父窗口变量
【发布时间】:2010-09-10 08:27:47
【问题描述】:

内部http://mydomain1.com/index.html

<html>
<body>
<script type="text/javascript">
  var a = 1;
</script>
<iframe src="http://domain2.com/test2.html"></iframe>
</body>
</html>

内部http://domain2.com/test2.html

<script type="text/javascript">
  alert(parent.a); // forbidden
</script>

有什么解决办法吗?

【问题讨论】:

    标签: iframe cross-domain


    【解决方案1】:

    如果您需要与其他框架通信,您可以使用postMessage。这仅适用于现代浏览器(IE8、FF3、Opera 9、Chrome)。

    由于安全原因,您实际上无法完全访问跨域框架 (Same Origin Policy)。

    【讨论】:

      【解决方案2】:
      • 跨域读取数据存在安全风险,因为另一个域上的数据可能包含敏感信息(即身份验证令牌)。
      • 可以将数据发布到另一个域。所以在这种情况下,也许你可以试试:

        • domain2.com/test2.html 向 mydomain1.com/index.html 发送一条消息,询问“a”值。
        • mydomain1.com/index.html 收到消息后可以通过将“a”值发布到 domain2.com/test2.html 来回复
      • 这意味着您需要在两个域上都设置事件侦听器以接收从另一个域发布的消息。

      【讨论】:

        【解决方案3】:

        您可以从 iframe 访问父 DOM 节点,但不能访问父窗口变量。

        【讨论】:

        • 不,甚至没有节点,因为 iframe 位于不同的域中。根本没有变通办法?
        猜你喜欢
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        • 2010-11-20
        • 2018-12-18
        相关资源
        最近更新 更多