我想使用 Nodejs express 获取客户端的公共 IP 地址。我在网上搜索了导致我使用这个问题的问题:
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log(ip)
Run Code Online (Sandbox Code Playgroud)
但是,在我的控制台中,我得到
::ffff:192.168.1.2
这是我的本地 IP 地址而不是公共 IP 地址
您的代码实际上是正确的。它不适合您的原因有两个:
req.connection.remoteAddress
显示请求者的 IP 地址。在您的情况下,您的节点正在侦听私有 ip 地址,因此唯一可以联系您的服务器的外部 ip 地址是另一台在同一私有 ip 范围内工作的计算机。为您的节点实例使用公共 IP 地址将解决该问题。
req.headers['x-forwarded-for']
只有在请求中存在标头时才能工作。通常情况下,当您有一个代理(某些 http 服务器 - nginx、apache ...)侦听公共网络并将通信中继到只能从专用网络访问的节点服务器时。这个代理将x-forwarded-for
使用原始客户端的IP地址向请求添加标头。在您的情况下,您没有代理或代理未配置为执行此操作。没有更多的信息是不可能确切地说。
归档时间: |
|
查看次数: |
3495 次 |
最近记录: |