【发布时间】:2019-10-17 18:31:58
【问题描述】:
我想使用 Nodejs express 获取客户端的公共 IP 地址。我在网上搜索了导致我使用这个的问题:
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log(ip)
但是,在我的控制台中,我得到了
::ffff:192.168.1.2
这是我的本地 IP 地址而不是公共 IP 地址
【问题讨论】:
-
连接到服务器的方式很重要。如果您在客户端中使用服务器的本地 IP 地址(假设它们在同一网络上),您将始终获得客户端的本地 IP。您需要通过它的公共互联网 IP 连接到您的服务器。
-
Ofc,您需要租用公共 IP 地址才能实现。
-
如果你不这样做,你可以试试免费的隧道,比如 ngrok (google it)
-
我在 heroku 中使用了
(req.headers['x-forwarded-for'] || '').split(',')[0] || req.connection.remoteAddress,它给了我公共 IP 地址,所以你是对的