Angular 2+代理请求makeup-api报ECONNRESET错误如何解决?
报错原因
- ECONNRESET本质是目标服务器主动断开了代理请求,现有配置缺少两个关键参数:
- 未设置
changeOrigin参数,代理请求发送时Host头还是localhost:4200,heroku的反向代理不识别该Host,直接拒绝连接 - 目标地址填写的是http协议,该接口现已强制走https,http请求触发重定向也会导致连接被断开
- 未设置
修复方案
1. 修改proxy.conf.json配置
更新配置内容如下:
{ "/api": { "target": "https://makeup-api.herokuapp.com", "secure": false, "changeOrigin": true } }
参数说明:
changeOrigin: true会自动将请求的Host头修改为目标服务的Hostmakeup-api.herokuapp.com,符合heroku服务的请求校验规则- 目标地址改为https协议,避免重定向导致的连接断开
2. 重启Angular开发服务
代理配置修改后必须重启ng serve才会生效,重启后重新发起请求即可正常获取接口返回数据。
可选排查方案
如果修改后仍然报错,可以在代理配置中添加"logLevel": "debug"参数,启动服务后查看控制台的代理转发日志,确认路径、请求头是否符合预期。
内容的提问来源于stack exchange,提问作者Олег Войтинський
相关产品推荐
相关产品推荐

