什么';s访问我的网站的用户的本地IP地址,位于Node.js+;表示

什么';s访问我的网站的用户的本地IP地址,位于Node.js+;表示,node.js,express,ip,Node.js,Express,Ip,我需要知道进入我的网站的用户的IP地址。我已经编写了以下代码,但它只返回用户WAN IP。这对我来说还不够,因为我需要一个完整的用户跟踪,以防止他们在同一个按钮上单击两次(cookies不是一个选项,因为大多数用户使用匿名模式) 我使用这段代码来获取req.ip(理论上它有我想要的),或者如果最后一个是空的,则只获取req.ip。问题是req.ips总是为空 req.ips.length ? req.ips : [req.ip] 你知道我现在能做什么吗?听起来你可能已经(部分)回答了你自己的问

我需要知道进入我的网站的用户的IP地址。我已经编写了以下代码,但它只返回用户WAN IP。这对我来说还不够,因为我需要一个完整的用户跟踪,以防止他们在同一个按钮上单击两次(cookies不是一个选项,因为大多数用户使用匿名模式)

我使用这段代码来获取req.ip(理论上它有我想要的),或者如果最后一个是空的,则只获取req.ip。问题是req.ips总是为空

req.ips.length ? req.ips : [req.ip]

你知道我现在能做什么吗?

听起来你可能已经(部分)回答了你自己的问题,但我想为你提出一些想法

首先,你永远不会得到计算机本地分配的IP地址:浏览器永远不会报告这一点。您也可能无法获得有意义的识别“低级”网络协议信息,因为有许多不同的NAT方法

正如你提到的,解决这个问题的传统方法是cookies,但是如果你的用户大多使用匿名模式,那就不是一个选项,正如你所说的

你考虑过HTML5本地存储吗?这在匿名模式下是可访问的,您可以像会话一样使用它,在每个客户端上存储唯一的会话ID。这意味着您的客户需要一个相对现代的浏览器,但希望这不会成为问题

以下是有关HTML5本地存储的一些信息:

不过,这并不是一个扣篮:匿名模式下本地存储的行为目前还存在争议。这里有一个很好的讨论:

另一个选择是使用querystring…也许这不是一个很好的解决方案,而且很容易被用户挫败(如果你担心的话)。当您第一次登录页面时,您可以将用户重定向到具有唯一ID的querystring的同一页面。这种方法很麻烦,因为您必须确保将querystring添加到每个内部链接。但它确实可以解决匿名浏览的所有问题。

您可以使用它

this.body = this.req.headers['x-real-ip'];

可能的重复:事实上,我相信我对req.ips函数的理解是错误的。它返回客户端IP,这在任何情况下都是它的WAN IP(现在似乎有点明显)。无论如何,这不能解决我的问题。有没有办法在IP跟踪方面更进一步,以便我能够正确识别用户?我认为这将有助于您:
this.body = this.req.headers['x-real-ip'];