Cross Origin - 窗口弹出窗口(window.opener为null)

时间:2015-03-19 08:30:22

标签: javascript internet-explorer iframe cross-domain window.opener

我想做什么:

  1. 从用户点击父窗口点击打开新窗口源是第三方网址(不同域名)

  2. 用户在弹出窗口中进行身份验证,然后在第三方提交重定向页面上的成功数据。 (像推特一样)

  3. 从子窗口(PopUpWindow)我必须将数据发送回父窗口。
  4. 我做了什么

    var windowReference= window.open('https://ThirdPartyURL', 'CrossDomain', 'width=840,scrollbars=yes,top=0');
    
    window.parentMethod= function (input) {alert(input)}
    

    窗口在新窗口中打开用户获取身份验证并在重定向页面上获取返回的数据 在重定向页面(子窗口)

    window.opener.parentMethod(response);
    
    在Firefox中它的工作但在IE中 window.opener null。原因是跨域。如果第三方网址在当前域中,那么它可以正常工作但是如果其跨域 windowReference 为空 为了让它工作,我必须更改互联网设置 - >安全 - >检查已启用 它几乎不可能在每台客户端机器上完成。

    我曾尝试使用Postmessage,但它支持IE10,在IE8和9中它支持Iframe,在我的情况下,第三方禁用了IFRAME嵌入。

    有人可以帮助我解决这个问题。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

简短的回答:你做不到。交叉原始政策有一个原因,完全不允许你做你想做的事情(因此另一个网站不会在你的网站上运行js,反之亦然)。

要解决此问题,您需要找到另一种发送数据的方式(通常是服务器端 - >卷曲请求)。