Сервер на Vercel ошибка CORS или нет пакета OPTIONS

Рейтинг: 0Ответов: 1Опубликовано: 03.04.2023

Frontend и Backend приложения залиты на Vercel. При проверке сервера через постман - работает корректно: запросы согласно роутов уходят, получают ответы, данные в БД записываются. Если отправляю запрос с фронта - ошибка CORS, но при этом пакет OPTIONS - 500. На бэке настройка CORS подключена через мидлвару:

const allowedCors = [
  'https://movies-explorer-frontend-henna.vercel.app/',
  'http://movies-explorer-frontend-henna.vercel.app/',
  'http://localhost:3000',
];

const corsOption = (req, res, next) => {
  const { origin } = req.headers;
  const requestHeaders = req.headers['access-control-request-headers'];

  const DEFAULT_ALLOWED_METHODS = ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE'];

  if (allowedCors.includes(origin)) {
    res.header('Access-Control-Allow-Origin', origin);
    res.header('Access-Control-Allow-Credentials', true);
  }

  if (req.method === 'OPTIONS') {
    res.status(200);
    res.setheader('Access-Control-Allow-Methods', DEFAULT_ALLOWED_METHODS);
    res.setheader('Access-Control-Allow-Headers', requestHeaders);
    return res.end();
  }

  return next();
};

module.exports = corsOption;

Пробовала доверенные адреса поставить просто "*" - работает также.введите сюда описание изображения

введите сюда описание изображения

Ответы

▲ 0Принят

Изменила немного код мидлвары:

`module.exports = (req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, Authorization');
  res.setHeader('Access-Control-Allow-Credentials', 'false');
  res.setHeader('Access-Control-Allow-Methods', 'GET,OPTIONS,PATCH,DELETE,POST,PUT');

  if (req.method === 'OPTIONS') {
    return res.status(200).json(({ body: 'OK' }));
  }

  return next();
};
`

На данный момент сервер работает корректно :)