VueJS, REST и Access-Control-Allow-Origin

Всё что касается построения API
Ответить
Аватара пользователя
porcelanosa
Сообщения: 547
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

VueJS, REST и Access-Control-Allow-Origin

Сообщение porcelanosa » 2018.02.25, 19:50

Использую Vuejs и Axios
Отправляю запрос вот так:

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

let url = 'http://amtg.local' + this.appUrl + '/routesapi/points'
				axios.get(url, {
					params: {id: 1},
					headers: {
						'Access-Control-Allow-Origin': '*',
						'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',
						'Access-Control-Allow-Headers': 'Origin, Accept, Content-Type, Authorization, Access-Control-Allow-Origin'
					},
					responseType: 'json',
				})
в контроллере использую

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

class RoutesapiController extends ActiveController
    {
        public $modelClass = 'common\models\Points';
        public $enableCsrfValidation = false;
        public function behaviors() {
            $behaviors = parent::behaviors();
            $behaviors['corsFilter'] =  [
                    'class' => \yii\filters\Cors::className(),
                    'cors'  => [
                        // restrict access to domains:
                        'Origin'                           => [*],
                        'Access-Control-Request-Method'    => ['POST', 'GET'],
                        'Access-Control-Allow-Credentials' => true,
                        'Access-Control-Request-Headers' => ['Origin', 'Content-Type', 'Accept', 'Authorization'],
                        'Access-Control-Max-Age'           => 3600,                 // Cache (seconds)
                        'Access-Control-Allow-Origin' => ['*']
                    ],
                ];
            return $behaviors;
        }
Получаю ошибку

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

Failed to load http://site.local/admin/routesapi/points?id=1: Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
Суть проблемы в том, что я пытаюсь разрабатывать кусок админки на Vue - но заставить Webpack собирать его нормально внутри сервера не получилось.
Т.е. Build собирается как надо, и все работает, но это он делает очень долго.
А в режиме DEV - т.е. когда работает свой сервер мне удалось его запустить только на другом порту. т.е. site.local:8081 - и теперь запросы к REST Api Yii идут уже как бы на другой домен.
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: VueJS, REST и Access-Control-Allow-Origin

Сообщение zelenin » 2018.02.25, 20:19

может OPTIONS еще добавить?

Аватара пользователя
porcelanosa
Сообщения: 547
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: VueJS, REST и Access-Control-Allow-Origin

Сообщение porcelanosa » 2018.02.26, 01:31

да вот так работает

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

            $behaviors['corsFilter'] =  [
                    'class' => \yii\filters\Cors::className(),
                    'cors'  => [
                        // restrict access to domains:
                        'Origin'                           => ['*'],
                        'Access-Control-Request-Method'    => ['POST', 'GET','PUT','DELETE','PATCH','OPTIONS'],
                        'Access-Control-Allow-Credentials' => true,
                        'Access-Control-Request-Headers' => ['*'],
                        'Access-Control-Max-Age'           => 3600,                 // Cache (seconds)
                        'Access-Control-Expose-Headers' => ['*'],
                        'Access-Control-Allow-Origin' => ['*'],
 
                    ],
                ];
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы

Ответить