2012-10-25 119 views

回答

0

這裏是一個工作示例:

var http = require('http'); 

var getClientIp = function(req) { 
    var ipAddress = null; 
    var forwardedIpsStr = req.headers['x-forwarded-for']; 
    if (forwardedIpsStr) { 
    ipAddress = forwardedIpsStr[0]; 
    } 
    if (!ipAddress) { 
    ipAddress = req.connection.remoteAddress; 
    } 
    return ipAddress; 
}; 

var server = http.createServer(); 

server.on('request', function(req, res) { 
    console.log(getClientIp(req)); 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    return res.end('Hello World\n'); 
}); 

server.listen(9000, 'localhost'); 

getClientIp功能從here採取一些小的改動。請注意,x-forwarded-for的內容是一個包含代理IP的數組(更多here),因此您可能希望檢查多於第一個元素。

1

根據請求是通過代理轉發還是直接連接進行的,源ip地址可能存儲在不同的地方。您必須先檢查req.header['x-forwarded-for'],然後再檢查req.connection.remoteAddress。一個示例函數顯示在這個gist