繁体   English   中英

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

[英]Google OAuth2: Redirect has been blocked by CORS policy: Request requires preflight, which is disallowed to follow cross-origin redirect

尝试实施 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 直接放入浏览器地址栏中时,一切正常(获取同意书,然后获取令牌)。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM