27

我正在向客户http提出请求,但出现错误。当我使用浏览器或发出看似相同的请求时,它工作得很好node.jsECONNREFUSEDcurl(1)

这是节点请求:

var options = {
  host: 'localhost',
  port: 8080,
  path: '/explorers/1.0/agegroup',
  method: 'GET'
};

var req = http.request(options, function(res) {
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log(e);
});

req.end();

它给了我错误:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

但是当我向不同的客户提出相同的请求时(curl在这种情况下):

$ curl http://localhost:8080/explorers/1.0/agegroup
{... response JSON ...}

其他注意事项:

  • 我尝试将主机更改为 www.google.com 并将端口更改为 80,并且节点成功连接

  • 我已经尝试更改服务器的端口,我仍然可以向所有客户端发出请求,但 node.js (仍然会得到ECONNREFUSED

  • 我要连接的服务器是CherryPy WSGI Server。当我尝试连接到nodelocalhost:8080 上的服务器时,它工作正常,这让我认为这是服务器的问题,除了其他客户端使用 CherryPy 服务器。

  • 我尝试使用与浏览器相同的标头,但这不起作用,而且问题似乎出在 TCP 级别,因此 HTTP 标头应该不是问题。

我的node请求有什么问题?

4

7 回答 7

19

我不同意索曼的不同意见。

我一直在努力解决这个问题,但是,当被调用时,nodejs v0.10.24 和 v0.10.25 确实拒绝连接到 PHP 5.4 开发服务器(PHP 的命令行服务器):

php -S localhost:8088

浏览器,curl,其他一切都连接得很好。然而,果然,将绑定地址更改为:

php -S 127.0.0.1:8088 

并且使用 xmlrpc 的 nodejs 连接得很好。这发生在 Mac OS X 10.9.1 上。很奇怪。

于 2014-01-27T07:39:56.307 回答
13

我想有时你只需要远离问题......

我找到了一个解决方案,但它似乎没有回答这个问题,我也不是很喜欢它。

我将 CherryPy 服务器配置更改为 service at127.0.0.1而不是localhost,并且node客户端开始工作。

于 2012-05-18T03:10:22.283 回答
7

我刚刚遇到了同样的问题。

请注意,默认情况下,Windows 7 不包括 localhost 条目C:\Windows\System32\drivers\etc\hosts维基百科参考

为 localhost 添加条目对 Node.js (0.10.25) 没有影响,因为它显然完全跳过了 hosts 文件。

改为使用 127.0.0.1 作为本地地址,这将适用于您的主机文件中的任何内容。

于 2014-01-28T18:41:07.353 回答
4

我有同样的问题。我可以通过将 localhost 或 127.0.0.1 替换为系统的 IP 地址来解决它(使用 ifconfig 作为 IP 地址)。

于 2015-07-30T06:46:09.170 回答
0

我在访问第三方网址时遇到了同样的问题。我尝试同时使用 dns (subdomain.domain.com) 和 ip (XXX.XXX.XXX.XXX) 但它不起作用。

经过一番挣扎,后来我意识到这是服务器(subdomain.domain.com)端的问题,它没有响应并出现故障。

我不同意这是 localhost / 127.0.0.1 (或域名与 IP 地址)的问题。(在上述情况下,肯定是主机映射不正确的情况)

于 2013-03-10T11:08:05.367 回答
0

$ ifconfig

docker0 链接封装:以太网 HWaddr ....
inet 地址:172.17.0.1 Bcast:172.17.255.255 掩码:255.255.0.0 .....

var dbSettings = {
主机:' 172.17.0.1 ',
用户:'root',
密码:'.......',
数据库:'.......',
端口:'3306'
};

码头IP - >主机

于 2021-01-07T09:38:53.210 回答
0

最适合我的是使用与我的 xampp 相同的端口。

于 2021-09-13T13:09:46.170 回答