我正在使用 Angular 4 HttpClient
向外部服务发送请求。这是一个非常标准的设置:
this.httpClient.get(url).subscribe(response => {
//do something with response
}, err => {
console.log(err.message);
}, () => {
console.log('completed');
}
问题是,当请求失败时,我在控制台中看到一条通用的 Http failure response for (unknown url): 0 Unknown Error
消息。同时,当我在 chrome 中检查失败的请求时,我可以看到响应状态为 422,并且在“预览”选项卡中,我看到了描述失败原因的实际消息。
如何访问我可以在 chrome 开发工具中看到的实际响应消息?
原文由 grdl 发布,翻译遵循 CC BY-SA 4.0 许可协议
该问题与 CORS 有关。我注意到 Chrome 控制台中还有另一个错误:
这意味着来自后端服务器的响应缺少
Access-Control-Allow-Origin
标头,即使后端 nginx 已配置为使用add_header
指令 将这些标头添加到响应中。但是,此指令仅在响应代码为 20X 或 30X 时添加标头。在错误响应中,标头丢失。我需要使用
always
参数来确保无论响应代码如何都添加了标头:add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;
正确配置后端后,我可以访问 Angular 代码中的实际错误消息。