窗口.在IE中同一域的opener为空

Window.opener null on same domain in IE

本文关键字:opener 为空 IE 窗口      更新时间:2023-09-26

我已经广泛地研究了这个问题(有许多类似的问题),但我没有找到我想要的确切答案。

我正在创建一个单点登录小部件,因此用户流程如下:

用户点击登录打开窗口(domain1)>登录流程(domain2)>登录页面(domain1)

下面是我在登陆页面上使用的代码:

<html>
<head>
    <title>Redirect</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript">
    if (window.opener && !window.opener.closed) {
        setTimeout(function(){
            window.opener.location.href = "[some URL]";
            window.close();
        },2000);
    }
    </script>
</head>
<body>
    <p>Logging you in...</p>
</body>
</html>

把登陆页放在最后的目的是为了在访问window.opener时消除跨域问题。

这在除IE以外的所有浏览器中都像一个魅力一样有效(喘气!)IE显示窗口。opener是空的,即使我已经返回到我自己的域。

到目前为止,我读到的东西都不能真正解决这个问题。我认为一定有一些方法可以做到这一点,因为这么多的网站都在使用FSSO。不幸的是,我们没有办法找到一个替代弹出窗口的方法。

由于浏览器相关的安全性,这在IE中是不可能做到的吗?我能想到的唯一一件事是在父母身上放上某种监听器,等待孩子关闭。嗯。

这个问题似乎与我们公司IE构建中设置的安全区域有关。不同的领域被划分为不同的区域。显然IE失去了窗口的值。当通过这些区域时,无需费心重置它。当在IE的外部构建上进行测试时,它工作了。