Javascript 在最新版本的Chrome中通过Google OAuth2登录时出现跨源策略问题

Javascript 在最新版本的Chrome中通过Google OAuth2登录时出现跨源策略问题,javascript,google-chrome,google-oauth,Javascript,Google Chrome,Google Oauth,在我的网站上,我们创建了一个弹出窗口,该窗口被重定向到Google授权,并在指定登录后将重定向URI返回到我的网站。在主窗口中,我们检查弹出窗口的状态,以确定用户是否已登录,以便关闭此弹出窗口 通常,一旦用户登录并且弹出窗口被重定向回我的站点,我们就可以访问主窗口中的弹出窗口。但是,从最新版本的Chrome(v.63.0.3239.132)开始,我们将得到以下错误: DOMException: Blocked a frame with origin "..." from accessing a

在我的网站上,我们创建了一个弹出窗口,该窗口被重定向到Google授权,并在指定登录后将重定向URI返回到我的网站。在主窗口中,我们检查弹出窗口的状态,以确定用户是否已登录,以便关闭此弹出窗口

通常,一旦用户登录并且弹出窗口被重定向回我的站点,我们就可以访问主窗口中的弹出窗口。但是,从最新版本的Chrome(v.63.0.3239.132)开始,我们将得到以下错误:

DOMException: Blocked a frame with origin "..." from accessing a cross-origin frame.
这似乎与有关,但我们不是从iframe调用window.open(它是从主站点调用的)。63.0.3239.132还应引入此问题的修复程序

我并不总是重复这个问题:如果用户已经登录到他们的Google帐户,一旦弹出窗口被重定向回我的站点,主窗口就可以访问弹出窗口。此外,在初始重定向到Google授权(到帐户选择器页面)后,我可以将弹出窗口导航回我的站点,此时主窗口将能够再次访问弹出窗口


这个问题也不会在Chrome和其他浏览器的早期版本中重新出现。

我无法解决您的问题,但我可以建议一种替代方法来处理您正在做的事情

与直接从主页访问弹出窗口或从弹出窗口(window.opener)访问主页不同,您是否考虑过使用浏览器的
会话存储在这些页面之间进行通信(这两个页面都由应用程序提供)

您的页面/窗口将共享会话存储,以便其中一个或两个可以挂接到
窗口。onstorage
事件以监视另一个所做的更改


我意识到这将需要一些重新开发,因此严格来说,这不是解决您问题的答案,但我希望这仍然是一个有用的建议。

您找到了解决方案吗?还没有。同样不确定是否有更好的途径获得帮助:这个问题我们也面临着类似的问题。我们无法再从处理oauth的弹出窗口访问window.openercallback@WarrenZhang这里也有。事实上,我花了大约7个小时才明白这是chrome上的一个bug,它可以与Firefox一起工作。我注意到的另一件事是,如果我尝试使用FacebookOAuth回调,我可以在重定向到回调后访问PopupLocation属性,这可能是如何识别问题的线索。我还注意到,如果我停在主窗口的断点上,facebook弹出窗口将冻结,我无法输入输入(如电子邮件和密码),google弹出窗口也不会冻结。我发现的唯一区别是一个有效,一个无效。你找到解决这个问题的方法了吗??我在google OAuth2中也遇到了同样的问题。