【问题标题】:Same Node JS http request get ECONNRESET on one server and OK on another相同的 Node JS http 请求在一台服务器上获取 ECONNRESET,在另一台服务器上获取 OK
【发布时间】:2016-07-29 01:25:50
【问题描述】:

我写了一个使用 express 的服务器。它在 AWS 中。我在 AWS 中也有它的克隆。 我尝试使用 Node JS 中的示例中实现的 REST API:

var http = require('http');
    var data = JSON.stringify({
    });

    var options = {
        timeout: 180000,
        host: server,
        port: '80',
        path: restAPI,
        method: 'GET',
        headers: {
            'Content-Type': 'application/json; charset=utf-8',
            'Accept': "application/json",
            'Cache-Control': "no-cache"
        }
    };


    var req = http.request(options, function (res) {
    });
    req.on('error', function (err) {
        console.log(err);
    });
    req.write(data);
    req.end();

如果我使用服务器 1 有“服务器”,它会完美运行。相反,如果我使用服务器 2,则返回 ECONNRESET 套接字挂起将不起作用。从服务器端,两台服务器都以 200 回答 API。如果我使用从浏览器运行的示例,它可以完美地与两台服务器配合使用。

它在 Node JS 中看起来是一个问题(所有服务器和客户端中的 v4.4.7)。任何人都可以指出我的解决方法。我接受更改我处理请求的方式,可能正在使用另一个模块。

【问题讨论】:

  • 不清楚您遇到了什么问题。 ECONNRESET 表示对方关闭了连接。
  • 让我澄清一下。您在两台服务器上运行完全相同的代码,而一台服务器正在关闭连接。这既不是 NodeJS 相关的,也不是编程相关的。如果您认为这是 Node 4.4.7 的问题(极不可能),并且正在寻求解决方法,请升级到 Node 6.x。

标签: node.js http


【解决方案1】:

问题在于 .write。删除它现在正在工作。一台服务器和另一台服务器之间的区别在于,第一台服务器是通过 CloudFlare 连接的,而第二台是直接的。直接连接第一台服务器失败的方式与第二台服务器相同。 现在,一切正常。非常感谢您的 NO HELP Alan。你是那些试图指向别人而不是帮助的人之一。感谢您每天让世界变得更美好!你太棒了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2011-04-11
    • 2012-02-20
    • 2014-10-28
    相关资源
    最近更新 更多