Node.js CORS与googleoauth

Node.js CORS与googleoauth,node.js,reactjs,express,cors,Node.js,Reactjs,Express,Cors,我试图在我的应用程序中实现谷歌登录,但遇到了一个令人沮丧的问题。 我的react应用程序在端口3000上运行,我的express服务器在端口5000上。我还使用passport对用户进行身份验证。 当我试图通过谷歌登录时,我点击了下面的路径,我得到了错误 请求的资源上不存在“Access Control Allow Origin”头。起源'http://localhost:3000因此,不允许访问。 从我读到的内容来看,我必须在express服务器上设置CORS(我使用CORS库进行了设置)。即

我试图在我的应用程序中实现谷歌登录,但遇到了一个令人沮丧的问题。 我的react应用程序在端口3000上运行,我的express服务器在端口5000上。我还使用passport对用户进行身份验证。 当我试图通过谷歌登录时,我点击了下面的路径,我得到了错误

请求的资源上不存在“Access Control Allow Origin”头。起源'http://localhost:3000因此,不允许访问。

从我读到的内容来看,我必须在express服务器上设置CORS(我使用CORS库进行了设置)。即使这样做,我仍然得到这个错误。 下面是代码:

护照:

module.exports = passport => {
  passport.use(
    new GoogleStrategy(
      {
        clientID: keys.googleClient,
        clientSecret: keys.googleSecret,
        callbackURL: "/auth/google/callback"
      },
      (token, refreshToken, profile, done) => {
        return done(null, {
          profile: profile,
          token: token
        });
      }
    )
  );
路线:

router.post(
  "/auth/google",
  passport.authenticate("google", {
    session: false,
    scope: ["profile"]
  }),
  (req, res) => {
    if (!req.token) {
      return res
        .status(401)
        .json("Not authorized");
    } else {
      console.log(req.token);
    }
  }
);
为了启用CORS,我所做的只是包括CORS库并将其与express一起使用:

//enables cors
app.use(cors()); 

也许我误解了整个CORS的事情。如何处理此问题?

浏览器错误消息提示要设置的正确原点:


请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:3000因此,不允许访问。

根据:


应用程序使用(cors({来源:http://localhost:3000" }))

您正在从localhost:3000向localhost:5000发出请求,因为它们的来源不同,所以对于安全浏览器,不会发出此请求。要规避,您必须使用代理

既然你们并没有提到这个网页,我相信你们正在使用CRA(CreateReact应用程序)。这就是在CRA中设置代理的方式

在客户端目录中:

npm i http-proxy-middleware --save
在client/src中创建setupProxy.js文件。无需在任何地方导入此文件。create react应用程序将查找此目录

将代理添加到此文件

const proxy=require("http-proxy-middleware")
module.exports=function(app){
    app.use(proxy(['/auth/google'],{target:"http://localhost:8888"}))}

我们的意思是,如果有人试图访问react服务器上的route/auth/google,请自动将请求转发到localhost:5000。

可能会帮助您从浏览器发送请求,标题为
Access Control Allow Origin
“*”