Здравствуйте. Возник вопрос: никак не могу авторизовать пользователя на стороннем API домене.
Как сервер использую yii2, вот конфигурация cors фильтра:
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Request-Headers' => ['X-Authentication', 'Authorization'],
'Access-Control-Request-Methods' => ['OPTIONS', 'GET', 'PUT', 'PATCH', 'DELETE', 'POST']
//'Access-Control-Allow-Credentials' => true,
]
];
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'auth' => [$this, 'auth'],
'except' => ['options']
];
return $behaviors;
}
Клиент:
function sendToken() {
var username = $("input#login").val();
var password = $("input#password").val();
var token = "Basic " + btoa(username + ":" + password);
console.log(token);
$.ajax({
url: 'http://admin.tech.local/api/voyages',
type: 'GET',
crossDomain: true,
success: function (){
alert('Thanks for your comment!');
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', token);
}
})
}
Прочитал, что нужно указывать AllowCredentials, но ведь этот заголовок говорит браузеру передавать куки, в то время, как в моем АПИ нет сессий.
Где вообще я свернул не туда?