我正在http向node.js客户提出请求,但我收到了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();
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
Run Code Online (Sandbox Code Playgroud)
但是当我与不同的客户端(curl在这种情况下)做出相同的请求时:
$ curl http://localhost:8080/explorers/1.0/agegroup
{... response JSON ...}
Run Code Online (Sandbox Code Playgroud)
其他说明:
我已尝试将主机更改为www.google.com,将端口更改为80,并且节点成功建立连接
我已经尝试更改服务器的端口,我仍然可以向所有客户端发出请求但node.js(仍然可以ECONNREFUSED)
我正在连接的服务器是CherryPy WSGI服务器.当我尝试连接到nodelocalhost:8080 的服务器时,它运行正常,这会让我认为这是服务器的问题,除了其他客户端使用CherryPy服务器.
我尝试使用我的浏览器使用的相同标头,但这不起作用,似乎问题是在TCP级别,所以HTTP标头应该不是问题.
我的node要求有什么问题?
小智 17
我不同意索曼的不同意见.
我一直在把这头发拉出来,但是,确实,当调用时,nodejs v0.10.24和v0.10.25拒绝连接到PHP 5.4开发服务器(PHP的命令行服务器):
php -S localhost:8088
Run Code Online (Sandbox Code Playgroud)
浏览器,卷曲,其他一切都很好.但是,果然,将绑定地址更改为:
php -S 127.0.0.1:8088
Run Code Online (Sandbox Code Playgroud)
并且使用xmlrpc的nodejs连接就好了.这发生在Mac OS X 10.9.1上.很奇怪.
aar*_*acy 13
我想有时你只需要远离问题......
我找到了一个解决方案,但它似乎没有回答这个问题,我真的不喜欢它.
我将CherryPy服务器配置更改为服务127.0.0.1而不是localhost,并且node客户端开始工作.
| 归档时间: |
|
| 查看次数: |
39344 次 |
| 最近记录: |