如何遍历请求中的 HttpHeaders 并将任何缺失添加到新的 header 变量中

How to loop through HttpHeaders in request and add any missing into new header variable

这是一个 angular 6 项目。

首先,我调用以下方法,设置一个新的 header 并执行获取请求:

public getExposurePageDetailByExposureId(caseId, EditMode): Observable<any> {
    let headers = new HttpHeaders().set('EditMode', EditMode);
    return this.httpClient.get(this.url.getExposurePageDetailByExposureIdUrl + "/" + caseId, {headers});
  }

处理请求后,它会通过一个文件 httpInterceptor.ts。这分析了一堆请求信息。

在此文件中,它创建了一个新的 HttpHeaders 变量:

var authHeader = "Bearer " + this._cookieService.get('userToken');
var userId =  this._cookieService.get('userId') == "" ? "0": this._cookieService.get('userId');
var centreId =  (this._cookieService.get('centerId') == "" || this._cookieService.get('centerId') == "null")? "0":this._cookieService.get('centerId');
var headers = new HttpHeaders({
    'Authorization': authHeader,
    'userId':userId,
    'centreId': centreId
  });

在此之后,我想将当前请求 headers 与新形成的 headers 变量进行比较。

我的想法是选择 EditMode header(名称和值)并将其添加到 headers

//req being the current request being processed with the EditMode header in it.
for(var hd in req.headers){
  if (headers does not contain hd.headername){
    //add header
    headers = headers.set('hd.headername', hd.headervalue);
  }
}

如何形成这个处理循环?

编辑: 使用以下会产生错误:

req.headers.keys().forEach(h=> {
              console.log(h);
              console.log(req.headers.get(h));
              })

进一步更新:

上述错误是由错误处理程序产生的,因此输出不是很有用,实际错误如下:

显然 req.headers.keys() 不能循环,但是当我在调试器中查询 keys 函数时,return 说它应该 return一个数组:

无论如何,它看起来应该有效。
它处理了很多其他请求而没有问题......可能是因为 none 其中任何在键

中设置的

下面是一个如何实施的例子:

 headers1.keys().forEach(key => {

   if (!headers2.has(key)) headers2.set(key, headers1.get(key))

 })

或更短:

headers1.keys().forEach(k => !headers2.has(k) && headers2.set(k, headers1.get(k)))