Google OAuth2:重定向已被CORS政策阻止:请求需要预检,不允许遵循跨源重定向

时间:2017-01-17 17:15:45

标签: node.js angular redirect cors oauth2

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

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

我在浏览器控制台中遇到此错误(链接已编辑):

  

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

奇怪的是,我只有在从GUI执行流程时才会收到此错误(用户按下按钮; angular2前端)。当我将localhost:8080 / myPageName直接放入浏览器地址栏时,一切正常(获得同意书,然后是令牌)。

感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

一个简单的解决方案是创建一个包含所需查询参数的隐藏链接,然后使用JavaScript点击链接,如果谷歌支持HTTP POST提交,则可以使用JavaScript魔法再次创建并直接提交隐藏表单以绕过CORS限制猜测已被删除或将在不久的将来删除。