Node.js &引用;否';访问控制允许原点';标题出现在请求的来源上;CORS不工作(使用npm包CORS)

Node.js &引用;否';访问控制允许原点';标题出现在请求的来源上;CORS不工作(使用npm包CORS),node.js,express,cors,Node.js,Express,Cors,我正在用React应用程序+NodeJS服务器做一个项目 我的应用程序位于端口3000,服务器位于端口5000 我想在“/api/users/login”上进行POST请求,但当我这样做时,我收到以下消息: 在“”处访问XMLHttpRequest 来自源“”已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源 这是客户机代码的一部分,我总是在这里进行捕获: axios .post(`$

我正在用React应用程序+NodeJS服务器做一个项目

我的应用程序位于端口3000,服务器位于端口5000

我想在
“/api/users/login”
上进行POST请求,但当我这样做时,我收到以下消息:

在“”处访问XMLHttpRequest 来自源“”已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源

这是客户机代码的一部分,我总是在这里进行捕获:

axios
    .post(`${process.env.REACT_APP_API_URL}/api/users/login`, userData)
    .then(res => {
      const { token } = res.data;
      localStorage.setItem("jwtToken", token);
      setAuthToken(token);
      const decoded = jwt_decode(token);
      dispatch(setCurrentUser(decoded));
      window.location.href = "/";
    })
    .catch(err => {
      console.log("err ", err);
      dispatch({
        type: GET_ERRORS,
        payload: err.response.data
      });
    });
以下是服务器的一部分:

const cors = require("cors");

const whitelist = [
  "http://localhost:3000",
  "http://localhost:5000",
  "https://ofilms.herokuapp.com"
];
const corsOptions = {
  origin: function(origin, callback) {
    if (whitelist.indexOf(origin) !== -1) {
      callback(null, true);
    } else {
      callback(new Error("Not allowed by CORS"));
    }
  }

router.post("/api/users/login", cors(corsOptions), (req, res) => {
  console.log("corsOptions ", corsOptions);

  const email = req.body.email;
  const password = req.body.password;

软件包文档:

您是否尝试过在没有自定义选项的情况下使用cors

router.post("/api/users/login", cors(), (req, res) => {});
甚至


app.use(cors())

@FirminoChangani我刚刚尝试了它,它正在工作,但是没有白名单,现在每个人都可以访问我的API。您是否尝试将值记录在
origin
中?更直观的方法是查看值是否来自通过比较的客户端。此外,记录原始标头以查看源站是否有效也很有用。这是因为express首先调用飞行前:查看它应该与…@token一起工作。但是corsOptions变量中的控制台日志正常,但在路由中,源站不正常defined@PimentoWeb好的,我用app.options('*',cors)替换cors(corsOptions)(corsOptions))在server.js中确实可以使用,但我希望只有当源站位于该白名单内时,才有一个白名单来访问API路由。。