angular - angular 5 httpclient ,在 post 上,响应不返回自定义标头,仅返回响应对象
问题描述
使用 Angular 5 common 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');
}
推荐阅读
- python - 为什么函数只返回范围内的第一个值?
- node.js - MongoDB 突变返回空填充对象
- c++ - 将多个 C 样式数组复制到一个更大的数组中的正确方法是什么?
- python - pip --version 命令显示错误,如何解决?
- azure - Azure - 虚拟网络网关与 VPN 网关
- python - 替换文件中多个单词的更快方法
- python-3.x - 嵌套for循环时间效率低,寻找智能替代方案
- javascript - Jest + mongodb-memory-server 拆解时的问题
- javascript - 悬停时如何突出显示具有相同数据的两个不同表格上的单元格?
- file - React-Native - 本地文件的路径