例如:
http.createServer(function (request, response) {
request.on("end", function () {
});
});
使用Request,如何找到请求的源IP?
答案 0 :(得分:1)
根据请求是通过代理转发还是直接连接,源IP地址可以存储在不同的位置。您必须先检查req.header['x-forwarded-for']
,然后再req.connection.remoteAddress
。此gist中显示了一个示例函数。
答案 1 :(得分: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),因此您可能希望检查的不仅仅是第一个元素。