我对我正在设计的简单应用程序的架构有疑问。
我的基于休息的api服务器位于http://localhost:3000的节点中 我的客户是在http://localhost:4200
的Angular 2中编写的在开发我的休息节点api服务器时,我成功实现了使用http://localhost:3000/auth/google测试的护照google身份验证, 我被重定向到谷歌登录页面,然后在登录后进一步重定向到我的休息节点api服务的/我的个人资料
现在我正在尝试做同样的事情,但起点是我的角度客户端,它调用节点api服务器来调用google auth。所以我的初始请求从 执行http.get的http://localhost:4200 http://localhost:3000/auth/google。希望谷歌认证页面显示我验证,但我得到以下错误
XMLHttpRequest无法加载 https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur ... = 1000090953925-p7jof0qa284ihknb5sor3i4iatnqarvo.apps.googleusercontent.com。 重定向 ' https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur ... = 1000090953925-p7jof0qa284ihknb5sor3i4iatnqarvo.apps.googleusercontent.com' 至 ' https://accounts.google.com/ServiceLogin?passive=1209600&continue=https://a ... sercontent.com%26from_login%3D1%26AS%3D60339aeceb428c&安培;的OAuth = 1&安培; SARP = 1&安培; SCC = 1' 被CORS政策阻止:No' Access-Control-Allow-Origin' 标头出现在请求的资源上。起源' null'是 因此不允许访问。
我已将网址包含在授权JavaScript来源下的google auth页面中的两个端口 http://localhost:3000 http://localhost:4200 并在授权重定向URI中 我已经包括在内 http://localhost:3000/auth/google/callback
节点api服务器中的代码
app.get(' / auth / google',passport.authenticate(' google',{范围:['个人资料','电子邮件& #39;]})); app.get(' / AUTH /谷歌/回调&#39 ;, passport.authenticate(' google',{ successRedirect:' / profile', failureRedirect:' / users' }), );
任何帮助表示赞赏
答案 0 :(得分:0)
两件事:因为后端和前端位于不同的端口上,您需要让后端包含CORS header 'Access-Control-Allow-Origin'的回复。如果你使用快递,那会是这样的:
res.header('Access-Control-Allow-Origin', '*');
此外,只需确保浏览器中的地址始终为 http :// localhost而非 文件 :// localhost
答案 1 :(得分:0)
你所要做的就是
发送$window.location.href="URL"
希望有所帮助