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.10.09, 08:34

Настоящий треш с этой корс. Эже даже впал в депрессию.
Поднял SAP на vuejs как и положено веду разрабоку с locahost:9094 поднимая через npm run serve.
Естественно vue на одном домене а rest api yii2 на другом.
Задача, хочу делать запросы так, чтобы они все приходили на период разработки. Запросы в последствии будут все из подмоего домена на мой. Будет использоваться авторизация Basic с куками никакого bearer.
В итоге началась проблема в CORS
Сделал все что писал автор тут viewtopic.php?f=19&t=47834
И эврика проблема прошла.....но когда я стал отправлять POST запросы на create он мне пищет

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

OPTIONS http://supersite.local/api/blocks/create 405 (Method Not Allowed)

Access to XMLHttpRequest at 'http://supersite.local/api/blocks/create' from origin 'http://localhost:8081' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Почему нет из коробки решения для таких случаев, неужели у всех все хорошо сразу ?

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

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

Сообщение an.viktory@gmail.com » 2019.10.09, 08:41

default controller от которого потом наследуются все другие контроллеры API

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

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']['except'] = ['options'];

        $behaviors['authenticator'] = $auth;

        return $behaviors;
    }
чтобы не запариваться с авторизацией при разраотке авторизую сам себя

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

public function beforeAction($action)
    {
        \Yii::$app->user->login(User::findByEmail('an.viktory@gmail.com'));
        $parent =  parent::beforeAction($action);

        return $parent;
    }
    
В файле index.php принудительно прописал заголовки т.к. по другому они не проходят

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

header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');

    

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

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

Сообщение yiiliveext » 2019.10.09, 09:51

В UrlManeger разрешите OPTIONS на этот роут.

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

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

Сообщение an.viktory@gmail.com » 2019.10.09, 09:58

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

 'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'login' => 'site/login',
                'registration' => 'site/registration',
                'OPTIONS <module:\w+>s/<action>' => 'api/default/options',

            ],
        ],
        
Прописал но не помогло

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

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

Сообщение yiiliveext » 2019.10.09, 10:02

Проверьте в панели yiidebug какой ответ отдается на запрос OPTIONS. Покажите также заголовки Request

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

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

Сообщение an.viktory@gmail.com » 2019.10.09, 10:05

а как мне это проверить если я не вижу дебаг панели когда работаю через SAP vuejs

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

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

Сообщение yiiliveext » 2019.10.09, 10:19

если к бекенду обращаетесь по ip, то ip/debug
или по домену http://supersite.local/debug
Последний раз редактировалось yiiliveext 2019.10.09, 10:33, всего редактировалось 1 раз.

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

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

Сообщение yiiliveext » 2019.10.09, 10:32

an.viktory@gmail.com писал(а):
2019.10.09, 09:58

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

 'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'login' => 'site/login',
                'registration' => 'site/registration',
                'OPTIONS <module:\w+>s/<action>' => 'api/default/options',

            ],
        ],
        
Прописал но не помогло

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

OPTIONS api/<module:\w+>s/<action>' => 'api/default/options',

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

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

Сообщение an.viktory@gmail.com » 2019.10.09, 10:50

Спасибо!!!!!!!!!!! прописал вроде пропала именно эта ошибка

Ответить