【问题标题】:Difference between document.referrer and window.parent.location.hrefdocument.referrer 和 window.parent.location.href 的区别
【发布时间】:2013-05-07 07:50:24
【问题描述】:

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

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

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

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

【问题讨论】:

  • referrer = 您来自哪个站点 location.href = 实际 URI

标签: javascript iframe


【解决方案1】:

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

window.parent 给你父 frame,它的 location 是它的 URI。

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

【讨论】:

  • 可能window.parent.location 工作不正常?不同的域会成为问题吗?
  • 不确定我能否给出权威答案,但如果没有父框架或您的脚本没有正确的跨站点访问权限,它将失败。对于这一切,可能有比嗅探父框架 URI 更好的解决方案,但如果没有更多细节,就不可能说出来。
  • 您需要哪些详细信息? :) 我从未在这种方法中遇到任何错误,但我想确定一下......
  • document.referrerwindow.parent.location 都不能处理跨域请求。
  • 文档。 referer 在 Internet Explorer 中不起作用...如何解决此问题
【解决方案2】:

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

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

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

【讨论】:

  • iframe 没有内容——它只是用来调用代码加载器。普通我们的客户直接使用这个加载器(只需在页面中插入<script>...</script>)但有时iframe是唯一的方法
  • 我明白了。我假设这是一种可以嵌入到他的页面上的应用程序。
  • @SWilk:我的 iframe 中有链接导航,我正在获取 iframe 应用程序的 URI,而不是包含 iframe 的应用程序,您能告诉我如何在其中的页面中获取 iframe 托管应用程序的 URI我在 iframe 中导航。
  • @ChupChapCharli:我不能从这个描述中完全理解你的问题。考虑发布带有代码示例的问题。也许那时有人可以提供帮助
【解决方案3】:

“document.location.ancestorOrigins”是更可行的选择。

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 2011-05-07
    • 2015-04-23
    • 2014-03-11
    • 2013-07-16
    • 2011-09-01
    • 2013-08-07
    • 2011-10-20
    相关资源
    最近更新 更多