angular - 在 flatMap 中访问响应标头角度 7
问题描述
我正在尝试访问 flatMap 中的响应标头
this.http.post<HttpResponse<any>>(`${environment.URL_API}/patients/v1/`, patient, {observe: 'response'}).pipe(
flatMap((res: any) => {
console.log(res)
var location = res.headers.get('Location'); //location = null
console.log("service", location)
return this.find(location);
}),
map(a => {
return a
}));
但res.headers.get('Location')
未定义
在控制台中,chrome 有一个 Header
解决方案
解决方案是Access-Control-Expose-Headers
在后端添加:
header("Access-Control-Allow-Methods: ... ");
header("Access-Control-Allow-Headers: ... ");
header("Access-Control-Expose-Headers: X-Custom-header");
header("X-Custom-header: $some data");
然后在前端这工作正常:
this.httpClientObject.get(url).toPromise()
.then(res => {
let data = res.headers.get('X-Custom-header');
console.log(data);
})
确切地说,这不是 Angular 问题。是API问题。带头
'access-control-expose-headers' : 'name-of-expose-header'
工作正常。
问题是这不适用于标题
'access-control-expose-headers' : '*'
您不能使用 * 并且必须明确输入要公开的标题的名称。
推荐阅读
- typeorm - 迁移运行问题。?
- python - 如何在 Python3 中使用 beautifulsoup 查找配对内容
- linux - 我可以添加多个 certbot 电子邮件进行通知吗?
- reactjs - 如何解决“操作必须是普通对象。使用自定义中间件进行异步操作。”
- kubernetes - 如何在 webhook 警报有效负载中获取 kubernetes 命名空间?
- javascript - 在表的 td 中添加 html 字符串
- streaming - Amazon Alexa 将自定义话语添加到在播放音乐流时触发的意图
- linux - 如何在linux中使用disk命令确定开始和结束扇区?
- javascript - 如何使节点画布中图像的大小始终为 128 像素
- python - HTML Parser 删除由 & 分隔的所有字符串(与号)