http.createServer(function (request, response) {
request.on("end", function() {
});
});
使用Request,我怎麼可以找到源頭請求的IP?
http.createServer(function (request, response) {
request.on("end", function() {
});
});
使用Request,我怎麼可以找到源頭請求的IP?
這裏是一個工作示例:
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),因此您可能希望檢查多於第一個元素。
根據請求是通過代理轉發還是直接連接進行的,源ip地址可能存儲在不同的地方。您必須先檢查req.header['x-forwarded-for']
,然後再檢查req.connection.remoteAddress
。一個示例函數顯示在這個gist。