无法在 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 可能被覆盖了。
我正在尝试 运行 对 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 可能被覆盖了。