Задать вопрос
@crn05

Ошибка CORS при взаимодействии с ЮКасса?

Приветствую. Кто нибудь использовал стороннюю библиотеку @a2seven/yoo-checkout для ЮКасса?
Он почему-то вызывает у меня ошибку политики CORS.

Вот участок кода с настройкой политики:
const corsOptions = {
  origin: ['https://api.mydomain.ru','https://admin.mydomain.ru', 'https://app.mydomain.ru','http://localhost:3000', 'http://localhost:3005', 'http://localhost:5173'], 
  methods: 'GET,POST,PUT,DELETE,PATCH', // разрешенные методы
  credentials: true, // Разрешает использование учетных данных (куки, авторизация и т.д.)
  optionsSuccessStatus: 200
}; 
 app.use(cors(corsOptions));


Как только я импортирую библиотеку const { YooCheckout } = require('@a2seven/yoo-checkout')
тут же возникает ошибка в консоли браузера
Access to XMLHttpRequest at 'https://api.mydomain.ru/api/branches' from origin 'https://admin.mydomain.ru' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
И так абсолютно по любому маршруту, а их около сотни.

Причем, на локальной машине все работает корректно, оплаты проходят, веб-хуки от Юкассы приходят, все работает как положено.
Проблема с @a2seven/yoo-checkout именно на сервере. Причем я отключил все, что связано с платежами, оставив только импорт этой библиотеки, ошибка все равно возникает.
Сервер node.js, express, nginx, debian
Клиент react
  • Вопрос задан
  • 378 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
@crn05 Автор вопроса
Оказывается я банально забыл установить npm пакеты на сервере после обновления скрипта.
Странно конечно, почему это вызвало ошибку CORS, но сейчас все работает.
Вопрос решен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас в политике не хватает разрешения на OPTIONS, который используется в префлайт-запросах.
https://developer.mozilla.org/en-US/docs/Glossary/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы