ECONNREFUSED错误,在其他客户端不会出现node.js错误
我正在用node.js
客户端发出一个http
请求,并且我得到一个ECONNREFUSED
错误。 当我使用我的浏览器或curl(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服务器 。 当我尝试连接到一个
node
服务器localhost:8080,它工作正常,这将使我认为这是服务器的问题,除了其他客户端使用CherryPy服务器。 -
我试过使用我的浏览器使用相同的标题,但是这是行不通的,似乎问题是在TCP级别,所以HTTP标头不应该是一个问题。
我的node
请求有什么问题?
我不同意Soman的分歧。
我已经把这个发型拉出来了,但是,当然,nodejs v0.10.24和v0.10.25在调用时拒绝连接到PHP 5.4开发服务器(PHP的命令行服务器):
php -S localhost:8088
浏览器,curl,一切连接就好了。 然而,果然,将绑定地址更改为:
php -S 127.0.0.1:8088
和nodejs使用xmlrpc连接就好了。 这发生在Mac OS X 10.9.1上。 很奇怪。
我想有时你只是需要摆脱这个问题…
我find了一个解决scheme,但似乎并没有回答这个问题,我不太喜欢它。
我将CherryPy服务器configuration更改为127.0.0.1
而不是localhost
,并且node
客户端开始工作。
我只是面临同样的问题。
请注意,Windows 7默认情况下不包含C:\Windows\System32\drivers\etc\hosts
localhost条目( 维基百科参考 )
添加localhost的条目对Node.js(0.10.25)没有影响,因为它显然完全跳过了hosts文件。
使用127.0.0.1作为本地地址,这将工作在你的主机文件。
我有同样的问题。 我能够解决它通过replace本地主机或127.0.0.1我的系统的IP地址(使用ifconfig的IP地址)。
我正好面临同样的问题,我正在访问第三方url。 我试过使用dns(subdomain.domain.com)和ip(XXX.XXX.XXX.XXX),但它没有工作。
经过一番斗争,后来我意识到,这是一个问题在服务器(subdomain.domain.com)结束,这是没有响应和下降。
我不同意这是localhost / 127.0.0.1(或域名与IP地址)的问题。 (在上面的例子中,肯定是主机映射不正确的情况)