Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

CORS в Yii2

Добавление фильтра совместного использования ресурсов Cross-Origin на контроллер немного сложнее, чем добавление других фильтров, описанных выше, так как фильтр CORS должен применяться перед методами проверки аутентификации и, таким образом, требует несколько иного подхода по сравнению с другими фильтрами.



Также проверка подлинности должна быть отключена для запросов CORS Preflight, чтобы браузер мог безопасно определить, может ли запрос быть сделан заранее без необходимости отправки учетных данных проверки аутентификации. Ниже показан код, в который нужно добавить свойство [[yii\filters\Cors]] фильтр в существующий контроллер, который наследуется от [[yii\rest\ActiveController]]:

use yii\filters\auth\HttpBasicAuth;

public function behaviors()
{
    $behaviors = parent::behaviors();

    // удалить фильтр аутентификации
    $auth = $behaviors['authenticator'];
    unset($behaviors['authenticator']);
    
    // вставить фильтр CORS
    $behaviors['corsFilter'] = [
        'class' => \yii\filters\Cors::className(),
    ];
    
    // заново вставить фильтр аутентификации
    $behaviors['authenticator'] = $auth;
    // обойти аутентификацию с помощью запроса CORS-pre-flight (метод HTTP OPTIONS)
    $behaviors['authenticator']['except'] = ['options'];

    return $behaviors;
}

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Log in to comment

Обсуждение этой статьи

ИНФОРМАЦИЯ: Вы оставите комментарий к этой статье как 'Гость'