Я использую Angular 7, и у меня возникла проблема с заголовками.
Это мой код:
signin() {
let signinData = this.signinForm.value;
this.encoded = btoa("my-trusted-client:secret");
let header = new Headers();
header.append('Authorization', 'Basic ' + this.encoded);
header.append('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');
this.http.post(this.url + '/oauth/token?grant_type=password&username=' + signinData.username + '&password=' + signinData.password, { headers: header })
.subscribe(data => {
console.log(data);
})
}
Ошибка вывода:
ошибка: «Unauthorized»
сообщение: «Unauthorized»
path: «/ barometre / oauth / token»
статус: 401
отметка времени: «2019-04-19T12: 35: 47.699 + 0000 "
Когда я тестировал его на Почтальоне, я получил результаты:
Редактировать:
Проблема была в подписи запроса.Я изменил это:
this.http.post(this.url + '/oauth/token?grant_type=password&username=' + signinData.username + '&password=' + signinData.password, { headers: header })
По этому:
this.http.post(this.url + '/oauth/token', params, { headers: header })
с
let params: URLSearchParams = this.serialize (this.data);
и сгенерировать новую функцию
serialize(obj: any): URLSearchParams {
let params: URLSearchParams = new URLSearchParams();
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var element = obj[key];
params.set(key, element);
}
}
return params;
console.log(params);
};