0

我想做的是:

  1. 从用户的父窗口单击打开新窗口源是第三方 URL(不同域)

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

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

我做了什么

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 。原因是跨域。如果第三方 URL 在当前域中,那么它可以正常工作,但如果它的跨域windowReference为 null 以使其正常工作,我必须更改Internet 设置->安全->启用检查 ,这几乎不可能在每台客户端计算机上执行。

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

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

4

1 回答 1

1

简短的回答:你不能。跨源策略的一个原因是完全不允许您做您想做的事情(因此另一个站点不会在您的站点上运行 js,反之亦然)。

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

于 2015-03-19T08:52:05.777 回答