Добрый день.
Пытаемся настроить cors фильтр для yii2 так, чтобы не приходилось делать дополнительные костыли.
Сейчас оно выглядит так:
'corsFilter' => [
'class' => Cors::class,
'cors' => [
'Origin' => ['*'],
'Access-Control-Request-Method' => ['OPTIONS', 'GET', 'POST'],
'Access-Control-Request-Headers' => ['Authorization,DNT,Keep-Alive,User-Agent,X-CustomHeader,X-Requested-With,If-Modified-Since,Cache-Control,Range,Content-Type'],
'Access-Control-Allow-Credentials' => true,
'Access-Control-Max-Age' => 3600,
'Access-Control-Expose-Headers' => ['Content-Length,Content-Range'],
],
],
Несмотря на такой обширный список разрешенных заголовков, все равно приходится где нибудь ставить "заглушку" вида:
public function beforeAction($action)
{
\Yii::$app->response->headers->add('Access-Control-Allow-Headers', 'Authorization,DNT,Keep-Alive,User-Agent,X-CustomHeader,X-Requested-With,If-Modified-Since,Cache-Control,Range,Content-Type');
return parent::beforeAction($action);
}
Если не делать дополнительную отправку заголовков, почему то мы получаем ошибку, например последняя:
Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
При этом вопрос касается только json типа отправки, при form-data заголовок не требуется и пропускает спокойно.
Что и где нужно настроить, чтобы не делать больше такие заглушки?