小编Vis*_*Pal的帖子

window.opener 引用在 Firefox 中丢失

考虑以下情况:

\n
    \n
  • 步骤1:网站A在新选项卡中打开网站B(此时网站B有其打开器窗口引用,即window.opener中的网站A窗口对象)。
  • \n
  • 步骤 2:网站 B 重定向到网站 C(这里也有 window.opener 引用网站 A 窗口)。
  • \n
  • 步骤 3:然后网站 C 执行一些身份验证并重定向回网站 B。\n在第 3 步,window.opener 具有当前窗口对象的引用,即网站 B 本身的窗口对象(window.opener === window)并且我们\xe2\x80\x99已经失去了对原始打开器(即网站A窗口对象)的引用。我们需要 window.opener 对象来使用 postMessage 与网站 A 进行通信。
  • \n
\n

步骤的视觉表示

\n

注意:我们\xe2\x80\x99t无法控制网站C,并且可以\xe2\x80\x99t控制它们\xe2\x80\x99如何重定向回网站B。\n而且这种情况仅发生在Firefox/Safari上。在 Chrome 上,我们能够在重定向后获取原始的 opener 引用。

\n

如果网站 C 使用 rel=noopener 进行重定向,则 window.opener 应为 null(来自 MDN 的参考)。我\xe2\x80\x99m 无法理解在这种情况下 window.opener 可以是当前窗口对象以及为什么它发生在 Firefox/Safari 而不是 Chrome 上?除了网站 C 之外,我们还能在其他地方做些什么来防止这种情况发生吗?

\n

html javascript firefox

5
推荐指数
1
解决办法
433
查看次数

标签 统计

firefox ×1

html ×1

javascript ×1