Я делаю проект с приложением 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