【问题标题】:How to delete a header for a given name in angular?如何以角度删除给定名称的标题?
【发布时间】:2019-04-03 10:10:50
【问题描述】:

在我的应用程序中,我正在执行多个 HTTP 请求。所有这些都需要一个带有访问令牌(和一些其他标头值)的身份验证标头。我在 HttpHeaders 类型的标头变量中定义(参见代码#1)以像 this.http.get(this.myUrl, { headers: this.headers}) 一样使用它。
就我而言,令牌必须随着时间的推移而刷新,我想更改标头以包含最新的令牌。

在我的代码中,我有一个刷新函数,它应该刷新令牌并将 HTTP 标头中的旧令牌替换为新令牌。
我的第一种方法是使用提供的set() method(参见代码#2)。这为标头添加了一个新值并且没有替换它(我现在有两个授权值)。
我的第二种方法是使用delete() method(参见代码#3)并删除授权,然后使用append() method 和一个新的。这导致了类似的结果。
我的最后一种方法是只使用 delete() 方法(参见代码#4)。


代码示例

代码#1:

headers = new HttpHeaders()
  .set('Content-Type', 'application/json')
  .set('Accept', 'application/json');

代码#2:

this.headers = this.headers
  .set('Authorization', 'Bearer ' + access_token);

代码#3:

this.headers = this.headers.delete('Authorization');
this.headers = this.headers.append('Authorization','Bearer ' + access_token);

代码#4:

this.headers = this.headers.delete('Authorization','Bearer ' + access_token);


结果

我希望标题 ({'Authorization', 'Bearer ' + access_token}) 的值被替换(第一种方法)。实际结果是它刚刚被附加:

{"Authorization", "Bearer access_token-old"}
{"Authorization", "Bearer access_token-new"}

对于第二种方法,我希望删除并附加一个新值,导致仍然添加两个值:

{"Authorization", undefined}
{"Authorization", "Bearer access_token-new"}

我的最后一种方法产生了与第一种方法相同的输出,而不是仅仅替换值。

你知道有什么方法可以替换{'Authorization','Bearer ' + access_token}中的access_token/value吗?

【问题讨论】:

    标签: angular typescript http-headers httpclient


    【解决方案1】:

    试试这个

    let headers: HttpHeaders = new HttpHeaders();
    headers = headers.set('Accept', 'application/json');
    headers = headers.set('Accept', 'application/json');
    headers = headers.set('Authorization', `Bearer ${access_token}`);
    

    【讨论】:

    • 感谢您的回复。但它仍然只是添加了一个相同的值(所以仍然是两个相同的值)。
    【解决方案2】:

    我设法找到了适合我的情况的简单解决方法:

    1. 我正在定义标题:
    headers = new HttpHeaders()
      .set('Content-Type', 'application/json')
      .set('Accept', 'application/json');
    
    1. 每次我需要刷新令牌时,我都会这样做:
    this.headers = new HttpHeaders()
      .set('Content-Type', 'application/json')
      .set('Accept', 'application/json')
      .set('Authorization', 'Bearer ' + access_token');
    


    但是如果有人知道如何使用 set()、append()、delet() 等来完成它。我很想听听。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多