js:如何获取远程客户端地址

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

假设有一个简单的请求路径,如:

app.get(/, function (req, res){
   var forwardedIpsStr = req.header('x-forwarded-for');
   var IP = '';

   if (forwardedIpsStr) {
      IP = forwardedIps = forwardedIpsStr.split(',')[0];  
   }
});

上面的方法是正确的,以获得真正的用户IP地址,还是有更好的方法?那代理呢?

提问于
用户回答回答于

如果正在运行像Nginx这样的代理或其他的代理程序,那么只有这样,应该检查“x转发-for”:

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;

用户回答回答于

  1. app.enable('trust proxy')到您的快速初始化代码。
  2. 当您想获取远程客户端的ip时,请使用req.ipreq.ips以通常的方式(好像没有反向代理)

如果你需要更复杂的东西,而不是信任在x转发中传递的所有东西,你的代理不会删除不可信源中预先存在的x转发,那么就可以使用更多的“信任代理”选项。

扫码关注云+社区