簡體   English   中英

angular 5 httpclient,在post上,響應不返回自定義頭,只返回響應對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM