«Запрашиваемый источник отсутствует в заголовке« Access-Control-Allow-Origin »» CORS не работает (с npm пакетом CORS) - PullRequest
0 голосов
/ 07 января 2020

Я делаю проект с приложением React + NodeJS сервером.

У меня есть приложение на порту 3000, а мой сервер на порту 5000.

Я хочу сделать запрос POST на "/api/users/login", но когда я это делаю, у меня появляется это сообщение:

Доступ к XMLHttpRequest по адресу http://localhost: 5000 / api / users / login ' из источника 'http://localhost: 3000 ' заблокировано политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: в запрошенном заголовке «Access-Control-Allow-Origin» нет ресурс.

Вот часть кода клиента, где я всегда go в подвохе:

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;

Документация по упаковке: https://www.npmjs.com/package/cors

1 Ответ

1 голос
/ 07 января 2020

Вы пробовали использовать коры без пользовательских опций?

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

Или даже

app.use(cors())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...