28

情况是这样的:有一个站点,它属于客户端,所以它不在我的域中,比如说client.com.

在这个站点上有一个iframe,它的来源iframe是一个简单的 js 代码,它加载了另一个 js ( client.js) - 这个代码在我的域中。

我需要做的是获取 iframe 所在页面的确切 url。所以现在我试图弄清楚运气document.referrerwindow.parent.location.href没有运气之间的区别。

两者都给了我我需要的东西,但我不知道什么更可靠?是否存在一种情况,一种可以工作而另一种不能?

4

2 回答 2

40

document.referrer为您提供链接到当前页面的页面的 URI。这是一个适用于所有页面的值,而不仅仅是框架。

window.parent为您提供父框架,它location是它的 URI。

如果要查找父框架的 URI,请使用window.parent.location.

于 2013-05-07T07:53:46.173 回答
13

主要区别在于document.referrer将指向链接到 iframe 内当前页面的页面。如果您的 iframe 内容包含允许浏览几个页面的链接,那么只有在 iframe 中加载的第一个页面的父框架 URI 为document.referrer. 通过单击 iframe 内的链接加载的每个页面都将具有包含document.referrer.

同时window.parent.location将始终包含父窗口中页面的 URI,但只有站点来源相同时才能访问。阅读有关放宽网站来源政策的信息,了解在您和您的客户网站上应该做什么,以便您可以访问数据。

话虽如此,我宁愿给您的客户提供服务密钥或令牌之类的东西,这将授权他的网站使用您的 iframed 应用程序,并将调用者身份验证为您的客户,因此您可以知道呼叫来自他的网站.

于 2013-05-07T08:11:57.297 回答