节点js传入请求源IP
例如:
http.createServer(function (request, response) { request.on("end", function () { }); });
使用请求 ,我如何find请求的源IP?
根据请求是通过代理转发还是直接连接,源IP地址可以存储在不同的地方。 你必须首先检查req.header['x-forwarded-for']
然后req.connection.remoteAddress
。 这个要点显示了一个示例函数。
这是一个工作的例子:
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
函数从这里进行了一些小的更改。 请注意, x-forwarded-for
的内容是一个包含代理IP的数组( 在这里阅读更多),因此您可能希望检查多个第一个元素。