angular 5 httpclient,在 post 上,响应不 return 自定义 headers,仅 return 响应 object
angular 5 httpclient , on post , the response does not return custom headers, only returns response object
在使用 Angular 5 个通用 httpClient 进行 http post 调用时,我没有得到实际的 http headers。我在请求中传递 observe: 'response' 以获取完整响应(默认情况下 httpClient returns 只有 body 响应)。
我想从 http header 响应中读取 csrftoken 值。我可以使用 chrome 浏览器网络视图看到 csrftoken 在响应 headers 中可用。
但是当我阅读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);
}
);
});
}
并且响应 headers object 在 chrome 调试器上调试时看起来像这样,如您所见,csrftoken 不可用作响应 [=40= 的键]
这是我访问 httpheaders
let headers: HttpHeaders = response.headers;
if (headers && headers['csrftoken']) {
let token: String = headers.get('csrftoken');
}
正如评论中已经建议的那样,您无法检查 header 是否存在您这样做的方式。您需要使用 has 方法。您的代码应如下所示:
let headers: HttpHeaders = response.headers;
if (headers && headers.has('csrftoken')) {
let token: String = headers.get('csrftoken');
}
在使用 Angular 5 个通用 httpClient 进行 http post 调用时,我没有得到实际的 http headers。我在请求中传递 observe: 'response' 以获取完整响应(默认情况下 httpClient returns 只有 body 响应)。
我想从 http header 响应中读取 csrftoken 值。我可以使用 chrome 浏览器网络视图看到 csrftoken 在响应 headers 中可用。
但是当我阅读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);
}
);
});
}
并且响应 headers object 在 chrome 调试器上调试时看起来像这样,如您所见,csrftoken 不可用作响应 [=40= 的键]
这是我访问 httpheaders
let headers: HttpHeaders = response.headers;
if (headers && headers['csrftoken']) {
let token: String = headers.get('csrftoken');
}
正如评论中已经建议的那样,您无法检查 header 是否存在您这样做的方式。您需要使用 has 方法。您的代码应如下所示:
let headers: HttpHeaders = response.headers;
if (headers && headers.has('csrftoken')) {
let token: String = headers.get('csrftoken');
}