Страница 1 из 1
CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 08:34
an.viktory@gmail.com
Настоящий треш с этой корс. Эже даже впал в депрессию.
Поднял 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.
Почему нет из коробки решения для таких случаев, неужели у всех все хорошо сразу ?
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 08:41
an.viktory@gmail.com
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');
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 09:51
yiiliveext
В UrlManeger разрешите OPTIONS на этот роут.
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 09:58
an.viktory@gmail.com
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'login' => 'site/login',
'registration' => 'site/registration',
'OPTIONS <module:\w+>s/<action>' => 'api/default/options',
],
],
Прописал но не помогло
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 10:02
yiiliveext
Проверьте в панели yiidebug какой ответ отдается на запрос OPTIONS. Покажите также заголовки Request
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 10:05
an.viktory@gmail.com
а как мне это проверить если я не вижу дебаг панели когда работаю через SAP vuejs
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 10:19
yiiliveext
если к бекенду обращаетесь по ip, то ip/debug
или по домену
http://supersite.local/debug
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 10:32
yiiliveext
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',
Re: CORS policy: No 'Access-Control-Allow-Origin'
Добавлено: 2019.10.09, 10:50
an.viktory@gmail.com
Спасибо!!!!!!!!!!! прописал вроде пропала именно эта ошибка