【发布时间】: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