Google OAuth2:redirect已被CORS策略阻止:请求需要预检,不允许跟踪跨源redirect

尝试实施Google OAuth2并使用https://github.com/google/google-api-nodejs-client#authorizing-and-authenticating作为参考。 将用户redirect到这样的同意页面时

var url = oauth2Client.generateAuthUrl({ access_type: 'offline', scope: some_scope }); res.redirect(url); 

我在浏览器控制台中看到这个错误(编辑链接):

XMLHttpRequest无法加载localhost:8080 / myPageName。 从localhost:8080 / myPageNameredirect到accounts.google.com/o/oauth2/auth?access_type = …已被CORS策略阻止:请求需要预检,不允许跟踪跨源redirect。

奇怪的是我得到这个错误只有当执行从GUI(用户按下button; angular2前端)的stream程。 当我把localhost:8080 / myPageName直接放到浏览器的地址栏中时,一切正常(取得同意书表格,然后是令牌)。

任何帮助表示赞赏。 谢谢。

我有同样的问题(与一个反应的前端,但它是一样的)。 这可能是因为从服务器你使用redirect,这触发CORS(即使从你的服务器,你允许)。

您必须以其他方式将redirectURL返回到您的前端,从前端应用程序捕获redirectURL,然后调用您需要调用的URL。

一个简单的解决scheme是创build一个隐藏的链接与所需的查询参数,并单击链接使用JavaScript,如果谷歌支持HTTP POST提交然后可以创build一个隐藏的forms,并直接再次使用JavaScript魔术绕过CORS限制,我想是已经移除或将在不久的将来被移除。