CORS policy: No 'Access-Control-Allow-Origin'

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

CORS policy: No 'Access-Control-Allow-Origin'

Сообщение an.viktory@gmail.com » 2019.09.21, 11:47

Делаю приложение на Angular и API для его работы.
столкнулся с этой проблемой

Код: Выделить всё

Access to XMLHttpRequest at 'http://shop.local/api/orders' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
создал модуль api на фронтенде и туда добавил в контроллер такие поведения

Код: Выделить всё

  public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['corsFilter'] = [
            'class' => \yii\filters\Cors::className(),
            'cors' => [
                'Access-Control-Allow-Origin' => ['*'],
                'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
                'Access-Control-Request-Headers' => ['*'],
                'Access-Control-Allow-Credentials' => true,
                'Access-Control-Max-Age' => 86400,
                'Access-Control-Expose-Headers' => [],
            ]
        ];
        return $behaviors;
    }

но тем не менее ошибка не прохожит.

yiiliveext
Сообщения: 480
Зарегистрирован: 2019.08.13, 01:49

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение yiiliveext » 2019.09.21, 13:07

Код: Выделить всё

public function behaviors()
    {
        $behaviors = parent::behaviors();
        
        $auth = $behaviors['authenticator'];
        unset($behaviors['authenticator']);
    
        $behaviors['corsFilter'] = [
            'class' => \yii\filters\Cors::className(),
            'cors' => [
                'Access-Control-Allow-Origin' => ['*'],
                'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
                'Access-Control-Request-Headers' => ['*'],
                'Access-Control-Allow-Credentials' => true,
                'Access-Control-Max-Age' => 86400,
                'Access-Control-Expose-Headers' => [],
            ]
        ];
        $behaviors['authenticator'] = $auth;
        
        return $behaviors;
    }


an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение an.viktory@gmail.com » 2019.09.21, 13:11

спасибо, но к сожалению не помогло

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение an.viktory@gmail.com » 2019.09.21, 13:15

Самое удивительное что этих заголовоков нет в ответе или запросе

yiiliveext
Сообщения: 480
Зарегистрирован: 2019.08.13, 01:49

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение yiiliveext » 2019.09.21, 13:16

an.viktory@gmail.com писал(а):
2019.09.21, 13:11
спасибо, но к сожалению не помогло
Добавьте еще

Код: Выделить всё

$behaviors['authenticator']['except'] = ['options'];

yiiliveext
Сообщения: 480
Зарегистрирован: 2019.08.13, 01:49

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение yiiliveext » 2019.09.21, 13:25

Если что, вот рабочий бойлерплейт для angular https://github.com/chrisleekr/yii2-angular-boilerplate

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение an.viktory@gmail.com » 2019.09.21, 13:29

тоже не помогло, но самое интересное что ответ сервера вернулся как надо.

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: CORS policy: No 'Access-Control-Allow-Origin'

Сообщение an.viktory@gmail.com » 2019.09.21, 13:32

yiiliveext писал(а):
2019.09.21, 13:25
Если что, вот рабочий бойлерплейт для angular https://github.com/chrisleekr/yii2-angular-boilerplate
Спасибо. Изучим.

Ответить