无法在 Angular 8 上使用 HttpHeaders 定义自定义 headers

Unable to define custom headers using HttpHeaders on Angular 8

我正在尝试 运行 对 SAP 业务 Objects 的 GET 请求,这需要一些自定义 headers。我按照 Angular documentation 使用 HttpHeaders class 定义了 headers 但似乎自定义 headers (X-...) 没有被识别。

这是我创建 headers 和 运行 GET 请求的代码:

getEnvId(token: string) {

    this.tokenHdr = { 
      headers: new HttpHeaders({
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Accept-Language': 'en-US',
        'X-SAP-PVL': 'en-US',
        'X-SAP-LogonToken': token
      })
    }

    console.log(this.tokenHdr);

    return this._http.get('http://' + this.environment + '/biprws/infostore/cuid_' + this.reportCuid, this.tokenHdr)
  }

console.log(this.tokenHdr)出现如下:

错误响应是:

我能够检索令牌并将其传递给此请求,因为我能够在此步骤之前成功地将令牌打印到控制台。令牌是通过 POST 请求检索的,没有任何自定义 headers,所以我猜这个问题与自定义 headers.

有关

来自浏览器开发工具中的“网络”选项卡:

尝试这样做解决你的问题 设置方法 returns headers object 每次都可以这样做。这样,拦截请求中的原始 headers 也将被保留。

let headers = new HttpHeaders().set('Accept', 'application/json')
     .set('Content-Type' , 'application/json')
     .set('Accept-Language','en-US')
     .set('X-SAP-PVL', 'en-US')
     .set('X-SAP-LogonToken', token)

let apiUrl: string = 'http://url';

return this.http.get(apiUrl, {headers});

这是我所做的,请检查它可能有帮助

//获取token

  loadToken() {
    const token = localStorage.getItem('token');
    this.authToken = token;
  }

 createAuthHeader() {
    this.loadToken();
    const headers = new HttpHeaders().set(
      'Authorization',
      `Bearer ${this.authToken}`
    );
    return { headers };
  }

  someTest() {
    return this.http.get(`${this.url}/count`, 
      this.createAuthHeader());
  }

尝试检查请求中 运行 的任何 HttpInterceptor。您的 headers 可能被覆盖了。

https://angular.io/guide/http#http-interceptors