如何在Angular中正确添加Headers?

How to properly add Headers in Angular?

这里是Angular中的服务代码:

getcareer(dataout:any){
   let headers = new HttpHeaders().append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
  //headers = headers.append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
  //let headers={'Authorization':'Bearer'+' '+GlobalService.authtoken}
  console.log(headers);
  return this.http.post('http://localhost:3000/employee/getcareer',
  {'headers': headers })
  .subscribe(data => {
    dataout = data});
}

现在登录并尝试访问此页面后,显示 401,未经授权。在浏览器控制台中,headers 被添加到 LazyUpdate 部分而不是 headers 部分。我试过 .set .append 和其他一些方法,但没有成功。请看一下,谢谢。

编辑: 这是浏览器中的详细控制台(我在控制台日志中打印了 httpheaders):

https://ibb.co/f002tZ9

以上是图片的 link(很抱歉,在此处发布图片时出现问题)。您可以看到 Headers 不存在于 'header' 部分中,而是存在于 'lazyupdate' 部分中。

试试这样:

const options = {
  headers: {
    'content-type': 'application/json',
    Authorization: 'Bearer ' + GlobalService.authtoken
  }
};

this.http.post('http://localhost:3000/employee/getcareer', options)

POST doc可以看出,第二个参数是数据:

/** POST: add a new hero to the database */
addHero(hero: Hero): Observable<Hero> {
  return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
    .pipe(
      catchError(this.handleError('addHero', hero))
    );
}

所以在你的情况下,你必须:

  getcareer(dataout:any){
    const headers = new HttpHeaders().append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
    console.log(headers);
    return this.http.post('http://localhost:3000/employee/getcareer',
    null,
    {headers }) //unncessary key-value
    .subscribe(data => dataout = data);
}

我发现了问题。问题是您必须为 POST 请求和 GET 请求以不同方式传递 headers。通常我已经找到了我假设的 GET 请求的解决方案。 对于 POST 请求,我在网上和此处找到了解决方案:

  const headers = { 'Authorization': 'Bearer '+GlobalService.authtoken, 'Content-Type': 'application/json' };


  return this.http.post('http://localhost:3000/employee/getcareer/',body,{headers}).subscribe(data => {
    this.dataout = data});

所以在 URL 之后,body 收到 POST 请求,然后是 headers。如果没有 body 则留下 null 然后放 headers。在 GET 请求中,没有 body 出现,headers 紧跟在 URL.

之后