2012-10-25 89 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