Я пытаюсь заставить внешний интерфейс (React JS) работать с моим внутренним сервером (Express JS). Я все еще борюсь с CORS. CORS-запросы по-прежнему блокируются.
Согласно документации CORS Я установил для своего экземпляра Express использование cors()
в качестве промежуточного программного обеспечения:
const app = express();
// Middlewares
const whitelist = [
'http://localhost:3000',
'http://localhost:3001'
];
const corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
}
};
app.use(cors(corsOptions));
Если кто-то спрашивает, почему я вообще использую CORS с localhost, это потому, что мне сказали сделать это, поскольку мне приходилось отправлять withCredentials: true
заголовок от ax ios запросов на сохранение сеанса после входа в систему.
Я только что добавил axios.defaults.withCredentials = true
для перехвата запросов во внешнем интерфейсе.
То, как он работал до добавления дополнительных доменов в corsOptions
, настраивало промежуточное ПО, чтобы сервер мог работать с внешним интерфейсом:
export const setHeaders = (req, res, next) => {
res.header('Access-Control-Allow-Origin', process.env.APP_URL);
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
};
...
app.use(setHeaders);
Если удалить предыдущий код, он не будет работать даже для одного домена.
Итак, что мне нужно изменить, чтобы сервер мог получать данные из нескольких доменов? Заранее спасибо.