2012-09-24 16 views
7

オクラホマので、私のサーバーに対して行われ、要求のホスト名を取得するにはNode.jsの中はとても簡単そうです:Nodejsサーバーのホスト名

app.get('/', function(req,res){ 
    console.log(req.headers.host); 
}); 

私の実際のHTTPのホスト名を決定する簡単な方法がありますサーバ?たとえば、私のサーバーはアドレスhttp://localhost:3000で実行されています。プログラムでこのアドレスを判別できますか?私はexpressjsを使用しています。

答えて

12

はい、できます。

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app); 

server.listen(3000, function(err) { 
     console.log(err, server.address()); 
}); 

はあなたにも、以下のことで、OSのホスト名を盗んでき

{ address: '0.0.0.0', family: 'IPv4', port: 3000 } 

を印刷する必要があります。

require('os').hostname(); 
+0

謝辞お返事ありがとうございました!私が端末で "localhost"を実行すると、 "localhost have address 127.0.0.1"というレスポンスが得られますが、server.address()は "0.0.0.0"を生成します。不一致の理由はありますか? –

+1

なぜ0.0.0.0に解決されるのか分かりません.Windowsが0.0.0.0のIPアドレスのエラーを発生させるため、address()メソッドを使用してバインドされたTCPソケットを受信しようとすると問題が発生しました。 0.0.0.0を127.0.0.1にマップするには 0.0.0.0は多くの理由で発生する可能性があります。これはマシン上のすべてのインターフェイスを意味することもあります。また、ipはマシンに関連付けられていないことを意味する場合もあります。私がやった短期的な研究からうまくいっています。 –

+1

'localhost'は' {address: '::'、family: 'IPv6'、port:5000} 'となります。 – ptf

関連する問題