在我的角度应用程序中,我需要从响应 header 中检索位置数据。 服务器(Nginx)配置为允许跨源并允许/公开 header 中的位置。我可以在 chrome DEV 控制台中看到这一点,但在我的 Angular 应用程序中,我没有看到标题的任何数据。
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) 返回未定义。
这里出了什么问题?
最佳答案
新的 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 类型转换为 Response,因此 TypeScript 无法捕获您的错误。最好像我的示例中那样删除类型,以便自动正确键入。
关于cors - CORS 上缺少 Angular 5 响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48117123/