在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是不是为空白?

Posted

技术标签:

【中文标题】在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是不是为空白?【英文标题】:On IE 10+, will document.referrer be blank when read inside an iFrame?在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是否为空白? 【发布时间】:2014-08-01 21:10:25 【问题描述】:

在所有其他最近的浏览器上,从 iframe 内运行的应用读取 document.referrer 将返回父站点的 URL。然而,在 IE 11 上,它似乎返回了一个空字符串。我想确认这是否是 IE 10+ 上的预期行为,但谷歌搜索并没有太多关于这个特定场景的信息。

MS的documentation有点含糊:

仅当用户通过上一个文档的链接到达当前文档时,此属性才会返回一个值。否则,document.referrer 返回一个空字符串;

不知道上面有没有涵盖iFrame,然后有这个位:

当链接来自安全站点时,它也会返回一个空字符串。

父应用确实是一个安全的 https 站点,但我们的 iframe 应用也是如此。这是否意味着我们将无法在 IE 10+ 上的 iframe 中读取此属性?谢谢

【问题讨论】:

我认为只要链接来自安全站点,无论当前页面是否安全,它都会返回一个空字符串,因为文档从未提及它 阅读 MS 的文档给人的印象是它的预期行为。您不会通过上一个文档中的链接加载 iframe。 【参考方案1】:

我发现,当 iframe 没有 src 或者其 src 具有 javascript: 协议时,document.referrer 属性也是一个空字符串。

您可以在开发者工具中轻松验证这一点:

var ifr = document.createElement('iframe');
document.body.appendChild(ifr);
ifr.contentDocument.referrer;
//-> '' in IE, '<parent location>' in Chrome

【讨论】:

以上是关于在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是不是为空白?的主要内容,如果未能解决你的问题,请参考以下文章

在动态 iframe 中注入表单时 IE 中的混合内容问题

在 IE 中使用 iframe 时,信号器脚本中的访问被拒绝错误

ie上iframe操作时闪烁的问题,重新加载的问题

IE 中 iFrame 上的 jQuery 问题

IE9 在 iframe 中加载脚本时抛出异常。为啥?

Fancybox 卡在 IE 中加载 iframe