В контроллере нужно разрешить выполнение запросов OPTIONS
protected function verbs()
{
return [
'login' => ['POST', 'OPTIONS'],
];
}
В настройках аутентификатора, если используется, исключи OPTIONS
public function behaviors()
{
$behaviors = parent::behaviors();
// remove authentication filter
$auth = $behaviors['authenticator'];
unset($behaviors['authenticator']);
// add CORS filter
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className(),
];
// re-add authentication filter
$behaviors['authenticator'] = $auth;
// avoid authentication on CORS-pre-flight requests (HTTP OPTIONS method)
$behaviors['authenticator']['except'] = ['options'];
return $behaviors;
}
Так же при отправке запроса с клиента нужно указывать режим запроса mode
fetch(API_URL.SIGN_IN, {
method: 'POST',
mode: 'cors', // режим запроса
//credentials:'include',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(values)
}).then ...