Angular - 连接到代理服务器并获得响应,但随后在其他时间有效的 api 调用上显示错误
Posted
技术标签:
【中文标题】Angular - 连接到代理服务器并获得响应,但随后在其他时间有效的 api 调用上显示错误【英文标题】:Angular - Connects to Proxy server and gets response but then shows Error on an api call which works other times 【发布时间】:2019-01-30 09:40:18 【问题描述】:当我询问客户数据时,应用程序会进行 api 调用。对于一个客户,它可以工作,但对于另一个相同的 api 调用,使用下面相同的代理完全相同的方式失败。
意识到在这种情况下,JSON 响应的末尾附加了错误(在 json 文件中的数组末尾连接),因此给出了 JSON 错误。但是对另一个客户的同一个电话并没有做到这一点。
在项目根目录添加proxy.config.json
"/api/*":
"target": "http://<server_ip_address>:<port>",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
然后在 package.json 的 start 中添加代理配置
"scripts":
"ng": "ng",
"start": "ng serve --proxy-config proxy.config.json --extract-css=true",
"build": "ng build --prod --aot=false --output-path dist",
"test": "jest",
"codecoverage": "jest --coverage",
"test:watch": "jest --watch",
"lint": "ng lint",
"e2e": "ng e2e"
,
错误:
[HPM] 尝试代理请求 /api/v1/login 时发生错误 localhost:4200 到 http://: (ECONNRESET) (https ://nodejs.org/api/errors.html#errors_common_system_errors)
如果我检查 chrome 网络控制台,请求的状态是正常的。但在预览选项卡中,它显示来自服务器的 JSON,然后附加以下字符串
尝试代理请求时出错 /api/getList?offset=0&limit=50 从 localhost:4200 到 http://localhost:8080
尴尬!!
相同的代码库在 Linux 机器中不会出错。我有 Mac 操作系统。同样的 api 也不会在为其他客户获取列表时出错。
有一个类似的问题,但所有的答案都不能解决问题。我已经尝试了所有合适的方法。
【问题讨论】:
【参考方案1】:我太绝望了,以至于我在这个问题上提出了另一个问题,现在我有了答案。
添加
"headers":
"Connection": "keep-alive"
proxy.config.json 上的 api 值对象的选项,现在我没有收到任何错误。包括数据加载,我可以毫无问题地运行 PUT 调用。
【讨论】:
以上是关于Angular - 连接到代理服务器并获得响应,但随后在其他时间有效的 api 调用上显示错误的主要内容,如果未能解决你的问题,请参考以下文章