Angular 5本地调用Heroku部署的Spring Boot API遇代理错误求助
解决Angular代理调用Heroku Spring Boot API的问题
这种代理报错的情况我之前开发时也碰到过,结合你的场景,给你几个实用的排查和解决方向:
先核对Angular代理配置细节
首先检查你的代理配置文件(通常是proxy.conf.json),几个容易踩坑的点:- 目标地址
https://jdjone-ws.herokuapp.com后面有没有遗漏斜杠?路径拼接时少个斜杠很容易导致请求地址错误; - 一定要加上
"secure": false选项,虽然Heroku的HTTPS证书是合法的,但本地代理服务器有时会对HTTPS验证产生冲突; - 别忘了配置
"changeOrigin": true,这个能确保请求头里的Host被修改为目标服务器的地址,避免Heroku的路由识别问题。
给你一个参考配置:
{ "/api/*": { "target": "https://jdjone-ws.herokuapp.com", "secure": false, "changeOrigin": true, "pathRewrite": {"^/api": ""} } }另外要确认启动Angular时确实指定了代理配置,比如运行
ng serve --proxy-config proxy.conf.json,而不是直接ng serve。- 目标地址
排查CORS和Heroku实例状态
虽然Postman能正常请求,但浏览器端的请求受CORS约束,哪怕用了代理也可能有隐藏问题:- 可以临时在Spring Boot的Controller上加上
@CrossOrigin(origins = "*"),测试是不是CORS配置导致的问题; - 别忘了Heroku的免费实例长时间闲置会休眠,第一次请求可能超时,代理服务器会因此报错。你可以先在浏览器里直接访问
https://jdjone-ws.herokuapp.com/api/empresa,唤醒实例后再测试Angular的请求。
- 可以临时在Spring Boot的Controller上加上
验证本地网络和请求路径
- 先用
curl https://jdjone-ws.herokuapp.com/api/empresa在本地终端测试,看看能不能正常获取响应,排除本地网络或者DNS解析的问题; - 打开Angular的开发者工具(F12),切换到Network标签,查看实际发送的请求地址和响应状态,有没有4xx/5xx的错误码,这能帮你定位具体问题。
- 先用
确认Spring Boot的路径配置
检查Spring Boot项目里的server.servlet.context-path配置,有没有设置额外的上下文路径?如果有的话,代理配置里的路径重写也要对应调整,确保最终请求的路径和Postman里的完全一致。
内容的提问来源于stack exchange,提问作者João Junior
相关产品推荐
相关产品推荐

