标签:javascript google-chrome google-oauth google-oauth2
在我的网站上,我们创建了一个弹出窗口,该窗口被重定向到Google授权,在指定登录后RedirectUri返回到我的站点.在主窗口中,我们检查弹出窗口的状态以确定用户是否已经登录,以便我们可以关闭此弹出窗口.
通常,一旦用户登录并且弹出窗口已重定向回我的站点,我们就可以访问主窗口中的弹出窗口.但是,从最新版本的Chrome(v.63.0.3239.132)开始,我们会收到以下错误:
DOMException: Blocked a frame with origin "..." from accessing a cross-origin frame.
这似乎与this Chrome bug有关,但是我们没有从iframe调用window.open(它从主站点调用). 63.0.3239.132也应该为这个问题引入一个修复程序.
我并不总是重复这个问题:如果用户已经登录了他们的Google帐户,一旦弹出窗口被重定向回我的网站,主窗口就可以访问弹出窗口.此外,在初始重定向到Google授权(到帐户选择页面)后,我可以将弹出窗口导航回我的网站,此时主窗口将再次访问弹出窗口.
此问题也不会在早期版本的Chrome和其他浏览器中重现.
解决方法:
我无法解决你的问题,但我可以建议另一种方法来解决你正在做的事情.
而不是直接从主页面或弹出窗口(window.opener)中的主页面访问弹出窗口,您是否考虑过使用浏览器的sessionStorage在这些页面之间进行通信(这些页面都是从您的应用程序提供的)?
您的页面/窗口将共享sessionStorage,因此一个或两个可以挂钩到window.onstorage事件以监视另一个所做的更改.
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onstorage
我意识到这需要一些重新开发,因此并不是你问题的严格答案,但我希望它仍然是一个有用的建议.
标签:javascript,google-chrome,google-oauth,google-oauth2 来源: https://codeday.me/bug/20190705/1389478.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。