2

例如:

http.createServer(function (request, response) {
   request.on("end", function () {

   });
});

使用Request,我怎样才能找到请求的源 IP?

4

2 回答 2

1

根据请求是由代理转发还是直接连接发出的,源 IP 地址可能存储在不同的位置。您必须先检查req.header['x-forwarded-for'],然后再检查req.connection.remoteAddress此要点中显示了一个示例函数。

于 2012-10-25T08:13:28.087 回答
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函数取自此处,并进行了一些细微更改。请注意, 的内容x-forwarded-for是一个包含代理 IP 的数组,(在此处阅读更多内容),因此您可能希望检查的不仅仅是第一个元素。

于 2012-10-25T08:12:46.280 回答