@MikUrrey

Как в REST API на Yii2 правильно настроить CORS?

Модуль обрабатывает REST-запросы, каждый его контроллер имеет настроенное поведение `corsFilter`.
Все работает хорошо, пока не возникает какая-нибудь ошибка (неважно какая - 404 или косяк в коде).
Тогда запрос не доходит до контроллера (?) и `corsFilter` не отрабатывает. Итог: CORS error в браузере и отсутствие какого-либо ответа от сервера для адекватной обработки. `corsFilter`, заданный в модуле, картину никак не меняет.
Как правильно настроить CORS в Yii2, чтобы настройка отработала при любой ошибке на уровне модуля?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@MikUrrey Автор вопроса
По сложившейся здесь традиции, сам же на свой вопрос и отвечаю.
Чтобы CORS отработал нормально, нужно
1) corsFilter в behaviors должен быть на самом верху;
2) убедитесь что в нем разрешено всё, что вам необходимо, в т. ч. заголовки, которые вы шлёте серверу;
3) в actions нужно добавить:
'options' => [
  'class' => \yii\rest\OptionsAction::class,
],

4) checkAccess в экшне options не должен фигурировать, этот эндпойнт должен быть доступен всегда;
5) если в конфигурации задается специальный маршрут посредством UrlRule с verb'ами, то в verb нужно обязательно добавить OPTIONS.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы