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 调用上显示错误的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Angular 中获得 REST 服务响应

无法连接到 dante socks 5 代理服务器

电脑连接路由器后显示“系统配置为代理使用,但null无法连接到此代理”,应该怎么解决呀?

连接到互联网?

Flutter mqtt,代理未响应连接

使用 Auth 将 pfsense Squid 代理连接到父 Bluecoat