Node.js Express 获取用户 IP 地址 - 解决 'undefined' 问题
在 Node.js Express 中,使用 'req.socket.remoteAddress' 属性获取用户 IP 地址时,可能会出现 'undefined' 的问题。这是因为该属性返回的是 IPv6 地址,而不是 IPv4 地址。
由于 IPv6 地址是以冒号分隔的字符串,所以在获取 IP 地址时,可能会返回一个包含 IPv6 地址的字符串,而不是期望的 IPv4 地址。因此,可能会导致 'ip' 变量的值为 'undefined'。
为了解决这个问题,可以尝试使用 'req.headers' 中的 'x-forwarded-for' 或者 'x-real-ip' 属性来获取 IP 地址。这些属性通常由反向代理或负载均衡器设置,并将客户端的 IP 地址传递给服务器。
例如,可以尝试使用以下代码来获取 IP 地址:
const ip = req.headers['x-forwarded-for'] || req.headers['x-real-ip'] || req.socket.remoteAddress;
这样,就可以在 'ip' 变量中获取到正确的 IP 地址了。
原文地址: https://www.cveoy.top/t/topic/qhJr 著作权归作者所有。请勿转载和采集!