获取parent.location.url - iframe - 从子级到父级

Car*_*llo 32 html javascript iframe jquery

我有一个在iframe中显示的页面.

我需要从该页面(子页面)获取带有js的parent.location.url.

两个站点都位于不同的域中.

我尝试着:

警报(parent.location.url)

但我得到这个错误:

权限被拒绝对HTTP:// parentdomain从中获取财产Location.URL 的http:// childdomain.

???? 可能吗?

Gia*_*nFS 74

试试这个:

var referrer = document.referrer;
alert(referrer);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,在所有提议的解决方案中,当iframe与调用页面不在同一个域时,这是唯一一个给我信息的解决方案. (2认同)

Mad*_*ams 7

你本来想做的事情本身是不可能的.除非您可以控制父页面调用子页面.如果这样做,则可以在父页面的URL中使用get语句调用子页面.因此,如果您的父页面是http://parentpage.com,那么您应该如何调用iFrame.

<iframe src='http://childpage.com/?parent=http://parentpage.com' />
Run Code Online (Sandbox Code Playgroud)

然后你在子页面中要做的就是获取引用,获取字符串

window.location.search //not sure of browser compatibility with this
Run Code Online (Sandbox Code Playgroud)

并通过从该字符串中抓取来提取父页面的URL.我会提供更多细节,但我甚至不确定我的第一个问题.

  • 这不是一个好习惯,因为任何域都可以添加上述搜索参数,然后iframe中的子页面可能会被认为是来自白名单的父页面。简而言之,如果您执行上述操作,则不仅parentpage.com,而且evilpage.com也将能够创建这样的iframe,并且子页面会将父页面解析为parentpage.com。那将是一个很大的安全漏洞。子级将无法使用window,parent.location.origin(跨域父级),因为它将引发异常。出于安全目的采用这种方式实现。最好的选择是使用document.referrer。 (2认同)

Pri*_*ark 5

你有没有尝试过类似的事情:

alert(window.top.location.href);
Run Code Online (Sandbox Code Playgroud)

  • 如果您只是想查看引用者(这将是加载该框架的人),您是否尝试过类似的操作: if (document.referrer != '') document.write('Thanks for opening from ' + document .referrer); (8认同)