节点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的数组( 在这里阅读更多),因此您可能希望检查多个第一个元素。