Angular httpHeaders post menthod 无法设置参数

Angular httpHeaders post menthod can't set parameters

我正在尝试使用以下方法从 RestAPI 获取 authtoken。 相同的 url、Params 和 Headers returns 我来自邮递员的正确回应。 但在 angular 中,我收到 401 未经授权的错误。 请帮助我了解我做错了什么? 我无法理解为什么我的 headers 在 lazyUpdate object 里面 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;
  });

}

请查看从浏览器发送的 headers 的附加屏幕截图。

post 方法的第二个参数是 HTTP 调用的 body 负载。您需要使用第三个参数,用于选项。您可以为 body 参数传递一个 null 值,但是 post 没有 body 的调用通常是误用的标志。

this.http.post('http://xx.xx.xx.xx:xxxxx/oauth/token', null, httpOptions)

使用 HTTP header 选项作为 post 请求中的第三个参数。

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;
    });

}