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です。localhost:8080 でサーバーに接続しようとすると、node正常に動作します。他のクライアントが 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

時には、問題から離れる必要があると思います...

解決策を見つけましたが、質問に答えていないようで、あまり好きではありません。

127.0.0.1ではなくat でサービスを提供するように CherryPy サーバーの構成を変更したところlocalhostnodeクライアントが動作し始めました。

于 2012-05-18T03:10:22.283 に答える
7

私はちょうど同じ問題に直面しました。

デフォルトでは、Windows 7 には localhost のエントリが含まれていないことに注意してくださいC:\Windows\System32\drivers\etc\hosts( wikipedia 参照) 。

localhost のエントリを追加しても、明らかにホスト ファイルが完全にスキップされるため、Node.js (0.10.25) では効果がありません。

代わりに 127.0.0.1 をローカル アドレスとして使用してください。これは、hosts ファイルにあるものは何でも機能します。

于 2014-01-28T18:41:07.353 に答える
4

私も同じ問題を抱えていました。localhost または 127.0.0.1 をシステムの IP アドレスに置き換えることで解決できました (IP アドレスには ifconfig を使用します)。

于 2015-07-30T06:46:09.170 に答える
0

サードパーティのURLにアクセスしていたのとまったく同じ問題に直面しました。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 Link encap:Ethernet HWaddr ....
inet addr: 172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0 .....

var dbSettings = {
ホスト: ' 172.17.0.1 '、
ユーザー: 'root'、
パスワード: '.......'、
データベース: '.......'、
ポート: '3306'
};

docker ip -> ホスト

于 2021-01-07T09:38:53.210 に答える