javascript - Angular无法设置http header ,只能使用拦截器

标签 javascript node.js angular angular8

我使用 http 拦截器为每个请求添加一个身份验证 token ,但对于一个请求,我必须添加另一个 token 来代替身份验证 token 。我的问题是我无法设置请求的 header 。

我尝试过这些,但它们都不能正常工作。这些在有效负载中设置 header ,而不是在实际 header 中。 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());
  }

最佳答案

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

关于javascript - Angular无法设置http header ,只能使用拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58222030/

相关文章:

javascript - IE 10 不遵守 z-index

javascript - vue 带自动滚动的大型列表

javascript - 在 nodejs + express 中验证 URL 以处理错误的请求错误

javascript - 调用不带参数且未定义默认参数的函数

angular - primeng 4 中的 "' p-checkbox ' is not a known element "

angular - 如何将 CKEDITOR 安装到 angular 项目并添加插件

javascript - 允许由另一个字段初始化字段吗?

javascript - 我可以使用 ES6/ES7 编写更短的代码块吗

javascript - Node : Save generated Stripe "Customer ID" in variable

html - 在 Angular 4 应用程序中,所有供应商 CSS 都呈现为 html 顶部的样式标签