在我的角应用程序中,我需要从响应标头中检索位置数据。 服务器(Nginx)配置为允许交叉原点并允许/暴露标题中的位置。我可以在Chrome DEV控制台中看到这一点,但在我的角度应用程序中,我没有看到标题的任何数据。
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers:Location, Content-Type
Access-Control-Expose-Headers:Location, Content-Type
这是我的代码段。
this.httpClient.post( url, {
UserName: username,
Password: password
}
)
.subscribe(
(res: Response) => {
console.log(res.headers);
},
error => {console.log('Error occured::' + error);
}
);
console.log(res.headers)返回undefined。
这里出了什么问题?
答案 0 :(得分:3)
新的HttpClient默认只返回正文。如果您想从响应本身检索任何内容,可以使用选项observe:
this.httpClient.post(url, {
UserName: username,
Password: password
}, {
observe: 'response'
})
.subscribe(res => {
console.log(res.headers.get('Location');
}, error => {
console.log('Error occured::' + error);
});
你是对res的类型转换,因此TypeScript没有捕获你的错误。最好在我的示例中删除类型,以便自动正确键入。
答案 1 :(得分:0)
行。有两个问题。正如@Manduro指出的那样,需要在角度请求中添加observe。另一个是我错过了两种标题类型之间的逗号。
https://enable-cors.org/server_nginx.html
需要随时添加'位置配置文件中的关键字