Angular不能仅通过拦截器设置http标头

时间:2019-10-03 15:09:51

标签: javascript node.js angular angular8

我使用http拦截器向每个请求添加一个auth令牌,但是对于一个请求,我必须添加另一个由auth令牌插入的令牌。我的问题是我无法为请求设置标题。

我尝试了这些,但是没有一个能正常工作。这些将标头设置在有效负载中,而不是实际标头中。no

header = new HttpHeaders({'Content-Type': 'application/json'});
header2: HttpHeaders = new HttpHeaders();

constructor(private httpClient: HttpClient) { 
   this.header2.append('Authorization', this.getRefreshToken());
}

ngOnInit() {
   this.httpClient.post('http://localhost:3001/api/token-exchange', { headers: this.header2}).subscribe()
}

即使它可以工作,拦截器也会覆盖它,所以我尝试使用HttpBackend,但是那也不起作用。

constructor(
    private httpClient: HttpClient,
    handler: HttpBackend
  ) {
    this.httpClient = new HttpClient(handler);
    this.header2 = this.header2.set('Authorization', this.getRefreshToken());
  }

1 个答案:

答案 0 :(得分:1)

一种阻止这种情况的方法是检查拦截器中http请求的URL,并将该URL从您将应用的常规逻辑中排除。然后像往常一样在http调用中添加所需的标头。