如何绕过window.opener的跨域安全性?
- 论坛
- 如何绕过window.opener的跨域安全性?
11 浏览
如何绕过window.opener的跨域安全性?
我刚刚发现,如果在IE中通过window.open
打开的窗口的新URL是跨域的,那么window.opener
是不可用的。这种情况会发生在窗口从我的域名开始,离开我的域名,然后返回到我的域名。我正在尝试在弹出窗口中进行社交注册(Facebook、Google等)。完成后,它应该关闭新窗口并重定向到原来的窗口。
我知道Soundcloud可以实现这一点,但我不知道他们是如何做到的。我看到URL从他们自己的网站变成了Facebook的,然后关闭了窗口。
从第三方网站重定向回来后,我运行以下代码:
var data = { type : 'complete', destination : '= $destination; ?>' }; if ( window.opener ) { window.opener.postMessage( JSON.stringify( data ), '*' ); window.close(); } else { alert( "无法找到窗口" ); }
在IE中弹出警告,即使窗口最初是我的域名,然后重定向到FB,然后再重定向回来。我原以为可能是因为我在PHP中立即打开我的网站并重定向的原因,但即使在打开我的网站后,执行window.location.href = 'facebookssite.com'
,返回时仍然出现问题。
注意:由于安全原因,社交注册在iframe
中无法使用Google、FB等。