2012-09-24 109 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()); 
}); 

應打印

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

你也可以retreive由下列操作系統的主機名;

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

非常感謝您的迴應和幫助!如果我在終端中執行「主機本地主機」,則得到響應「localhost具有地址127.0.0.1」,但server.address()產生「0.0.0.0」。有差異的原因嗎? –

+1

我不知道爲什麼它解析爲0.0.0.0,當我嘗試使用address()方法來偵聽綁定的tcp套接字時出現問題,因爲windows會爲0.0.0.0的ip地址引發錯誤,映射0.0.0.0到127.0.0.1 0.0.0.0可能會出現很多原因,它可能意味着一臺機器上的所有接口,也可能意味着沒有ip與一臺機器以及其他一些東西相關聯,如以及我已經完成的簡短研究。 –

+1

'localhost'對我來說是'{address:'::',family:'IPv6',port:5000}'。 – ptf