Рубрики
Uncategorized

Yii2 спокойные 401 + nginx + Настройки междоменных осей Axios

Автор оригинала: David Wong.

1. Общие междоменные проблемы get и post можно решить, установив nginx. Добавьте следующий код в HTTP-файл nginx.conf

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Headers X-Requested-With,Content-Type,x_requested_with;

add_header Access-Control-Allow-Methods HEAD,GET,POST,OPTIONS;

2. В случае междоменной конфигурации nginx выше. Недавняя проблема заключается в том, что yii2 запросы restful с токенами недоступны для Axios, если проверка подлинности не возвращает 401. После полудня поисков я обнаружил, что это проблема на стороне сервера. Конкретный принцип не очень ясен. Вообще говоря, существует несколько уровней запросов клиентов. Код аутентификации является относительно продвинутым, и междоменный nginx не используется. Таким образом, хотя интерфейс вернул 401 правильно, Axios не смог получить это значение из-за междоменных ограничений. Это требует глубоких междоменных настроек в yii2.

3. Первая мысль-добавить настройки CORS в поведение родительского контроллера. Это конфигурация, которая поставляется с yii2. Однако обнаружение ошибки клиента означает, что не может быть двух одинаковых междоменных доменов. Потому что междоменные настройки yii2 конфликтуют с настройками nginx.

4. После поиска в течение половины дня я, наконец, нашел несовершенное решение, то есть добавление междоменных настроек в yii/filters/auth/AuthMethod. php . Поскольку на самом деле другого места для поиска нет, вы можете настроить пользовательский заголовок для междоменного доступа до сбоя аутентификации.

5. Конечно, я думаю, что этот метод отстой. Потому что принцип разработки yii2 заключается в том, чтобы стараться не перемещать пакеты поставщиков. Я не знаю, есть ли Бог, который может предложить мне лучший путь.