从不同域中的frame / iframe获取顶部窗口网址

时间:2011-12-23 17:32:53

标签: javascript same-origin-policy

我有一个内部有一些javascript的网页,它将作为iframe嵌入到不同的网站中。我需要根据运行它的网站调整页面的行为。为此,我尝试从我的页面阅读top.location.href,但这引发了一个错误:

  

不安全的JavaScript尝试使用网址http://website.url访问框架   来自带有网址http://mypage.url的框架。域,协议和端口   必须匹配。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:11)

在最常见的情况下,您确实可以检索iframe的父网址。如果iframe只有一个级别,那么此方法将起作用:

var parentURL = document.referrer

https://developer.mozilla.org/en-US/docs/Web/API/document.referrer

我在创建iframe小部件时使用过这种方法。请记住,如果您想要顶级窗口位置,但它不是您的iframe的父窗口...您将无法获得它。此外,如果您的窗口小部件在iframe中导航,则引荐来源将会更改。

Nicholas Zakas的另一篇优秀文章可以在他的博客上找到: http://www.nczonline.net/blog/2013/04/16/getting-the-url-of-an-iframes-parent/

答案 1 :(得分:1)

这是因为您声明了相同的原始政策,并且出于安全原因,它已到位。在不改变用户浏览器的情况下,无法绕过它。