2

我正在尝试使用 express 从传入连接中获取远程 IP 地址。已经尝试了在网上找到的常见解决方案:

  1. req.headers['x-forwarded-for'] / 结果:始终未定义
  2. req.socket.remoteAddress / 结果:始终获取网关 IP(IE:192.168.1.1)而不是外部地址。

有什么线索吗?

4

2 回答 2

0

您是否通过在自己机器上的 VM 中运行应用程序来测试这一点?如果是这样,你得到了正确的答案。X-Forwarded-For 是空的,因为没有代理,并且您在主机上看到虚拟机用来路由的虚拟接口。那是请求来自的IP。

于 2012-05-30T09:45:41.293 回答
-3

这是我在http://th.issh.it/ip使用的一些代码

也许它是区分大小写的?

exports.iptoy = function(req,res) {
    var clientip = req.socket.remoteAddress;
    var xffip  = req.header('X-Forwarded-For');
    var ip = xffip ? xffip : clientip;
    if(req.params.format == 'json')
        res.send({client:clientip,xforwardedfor:xffip});
    else
        res.send(ip+"\n");
}
于 2012-05-29T12:46:42.527 回答