Angular Метод сообщения httpHeaders не может установить параметры - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь получить аутентификацию от RestAPI, используя метод ниже. Тот же URL, Params и Headers возвращает мне правильный ответ от почтальона. но в angular я получаю 401 несанкционированную ошибку. пожалуйста, помогите мне понять, где я делаю неправильно? Я не могу понять, почему мои заголовки внутри lazyUpdate объект внутри httpHeaders .

Заранее спасибо.

login(loginData) {
const httpOptions = {
  headers:new HttpHeaders().set("Authorization", "Basic " + btoa("username:password")).set("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8").set("access-control-allow-credentials",'true'),
  params:new HttpParams().set('username', loginData.email).set('password', loginData.password).set('grant_type', 'grant_type')
}
this.http.post('http://xx.xx.xx.xx:xxxxx/oauth/token', httpOptions).subscribe(
  data => {
    this.saveToken(data);
    return true;
  },
  err => {
    alert('Invalid Credentials')
    return false;
  });

}

Пожалуйста, найдите прикрепленный скриншот заголовков, отправляемых из браузера. enter image description here

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Используйте опцию HTTP-заголовка в качестве третьего параметра в запросе на публикацию.

login(loginData) { 

    let httpOptions = {
        headers: new HttpHeaders({ 
            "Access-Control-Allow-Credentials": "true",
            "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
            'Authorization' :  "Basic " + btoa("username:password"),
            'username': loginData.email,
            'password': loginData.password,
            'grant_type': 'grant_type' 
        }) 
    };

    this.http.post('http://xx.xx.xx.xx:xxxxx/oauth/token', {},  httpOptions).subscribe( data => {
        this.saveToken(data);
        return true;
    },
    err => {
        alert('Invalid Credentials')
        return false;
    });

}
0 голосов
/ 10 февраля 2020

Второй параметр метода post - это полезная нагрузка body HTTP-вызова. Вам нужно использовать третий параметр, который предназначен для опций. Вы можете передать значение null для параметра body, но вызовы post без тела обычно являются признаком неправильного использования.

this.http.post('http://xx.xx.xx.xx:xxxxx/oauth/token', null, httpOptions)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...