![](/img/trans.png)
[英]angular 5 httpclient , on post , the response does not return headers, only returns response object
[英]angular 5 httpclient , on post , the response does not return custom headers, only returns response object
使用Angular 5常見的httpClient進行http post調用時,我沒有得到實際的http標頭。 我正在通過觀察:'響應'請求獲得完整響應(默認情況下,httpClient僅返回響應中的主體)。
我想從http標頭響應中讀取csrftoken值。 我可以看到csrftoken在使用chrome瀏覽器網絡視圖的響應頭中可用。
但是當我在Angular中讀取httpClient響應時,同樣不可用。
post(inURL, data, config = undefined) {
let headers, options;
if (config){
options = config;
} else {
//headers = this.getDefaultHeader();
//options = new RequestOptions({ headers: headers });
options = httpOptions;
}
options = { ...options, observe: 'response' };
let action = this.httpService.post(inURL, data, options);
return new Promise((resolve, reject) => {
action.subscribe(
response => resolve(response),
error => {
this.interceptError(error);
reject(error);
}
);
});
並且在chrome調試器上調試時,響應頭對象看起來像這樣,因為您看到csrftoken不能作為響應對象上的鍵使用
這是我訪問httpheaders的方法
let headers: HttpHeaders = response.headers;
if (headers && headers['csrftoken']) {
let token: String = headers.get('csrftoken');
}
正如評論中已經建議的那樣,您無法檢查標題是否以您的方式存在。 您需要使用has方法。 您的代碼應如下所示:
let headers: HttpHeaders = response.headers;
if (headers && headers.has('csrftoken')) {
let token: String = headers.get('csrftoken');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.