Проблема CORS: в запрашиваемом ресурсе отсутствует заголовок "Access-Control-Allow-Origin"

var enableCORS = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

// intercept OPTIONS method
if ('OPTIONS' == req.method) {
  res.send(200);
}
else {
  next();
}
};
app.use(enableCORS);

Я обнаружил, что использую следующий фрагмент на стороне сервера, но все же, когда я пытаюсь POST, я получаю сообщение об ошибке Нет заголовка "Access-Control-Allow-Origin" на запрошенном ресурсе.

1 ответ

Решение

Я использую только следующую строку:

res.header("Access-Control-Allow-Origin", "*");

И это работает. Есть ли шанс, что вы напечатаете что-нибудь еще перед отправкой заголовков? Заголовки должны быть отправлены раньше всего. Код промежуточного программного обеспечения должен предшествовать чему-либо еще.

Вы уверены, что код выполняется? сделайте несколько печатей 'console.log', чтобы убедиться, что enableCORS называется

Наконец, используйте инструменты разработчика Chrome (или любой другой аналогичный инструмент) для просмотра заголовков, возвращаемых с сервера. Для chrome перейдите в сеть => проблемный запрос => заголовки => заголовки ответа и убедитесь, что заголовки CORS есть.

Обновление Попробуйте использовать следующее (взято отсюда):

res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); # OPTIONS removed
res.header('Access-Control-Allow-Headers', 'Content-Type');
Другие вопросы по тегам