Ошибка ECONNREFUSED с node.js, которая не возникает в других клиентах

Я делаю запрос 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();

И это дает мне ошибку:

{ [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 успешно устанавливает соединение

  • Я пытался изменить порт сервера, и я все еще могу делать запросы со всеми клиентами, кроме node.js (который все еще получает ECONNREFUSED)

  • Сервер, к которому я подключаюсь, — это CherryPy WSGI Server. Когда я пытаюсь подключиться к серверу nodeпо адресу localhost:8080, он работает нормально, что заставляет меня думать, что это проблема сервера, за исключением того, что другие клиенты работают с сервером CherryPy.

  • Я пробовал использовать те же заголовки, что и мой браузер, но это не работает, и похоже, что проблема в любом случае на уровне TCP, поэтому заголовки HTTP не должны быть проблемой.

Что не так с моим запросом node?

25
задан aaronstacy 17 May 2012 в 21:45
поделиться