如何获得使用Nodejs Express发送请求的客户端的公共IP地址?

问题描述 投票:0回答:2

我想获取客户端uisng Node.js Express的公共IP地址。我在网上搜索了导致我使用此问题的问题:

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

但是,在我的控制台中,我得到了

:: ffff:192.168.1.2

这是我的本地IP地址而不是公共IP地址

node.js express
2个回答
0
投票

您必须使用ip module

npm install ip


0
投票

您的代码实际上是正确的。它对您不起作用的原因有两个:

  1. req.connection.remoteAddress显示请求者的IP地址。在您的情况下,您的节点正在侦听专用ip地址,因此可以与您的服务器联系的唯一外部ip地址是在同一专用ip范围内工作的另一台计算机。对您的节点实例使用公共IP地址将解决此问题。

  2. req.headers['x-forwarded-for']仅在请求中存在标头时才有效。通常,当您有一个代理(某些http服务器-nginx,apache ...)在公共网络上侦听并将通信中继到只能从专用网络访问的节点服务器时,通常就是这种情况。并且此代理会将x-forwarded-for标头添加到具有原始客户端IP地址的请求中。在您的情况下,您没有代理,或者未配置代理。没有更多的信息就无法准确地说出。


推荐问答