为什么 node/Express 中的 req.ip 返回冒号分隔的 IP 地址?

2024-01-16

我正在尝试记录远程客户端 IP。听起来很简单,Express 在请求对象上提供了“ip”属性(如 req.ip 中所示)来获取此信息。此外,还有 req.ips 从涉及代理的 X-Forwarded-For 获取多个 IP 地址。我也尝试过 npm 模块request https://www.npmjs.com/package/request-ip-ip。我的问题是它们都返回客户端 IP 地址,如下所示

 ::ffff:A.B.C.D

其中 A.B.C.D 确实是我正在寻找的地址。但是,我的问题是:那里的前缀是什么?我可以理解 req.ips 或 X-Forwarded-For 返回多个 IP 地址,但即使在那里,我也希望真实的 IP 地址不为空。

当然,我可以获得最后一个地址,但我想知道即使在尝试仅获取单个 req.ip 地址时,冒号分隔的空白条目意味着什么?


双冒号::是 IPv6 中的快捷方式,用于指示一串零,如这个服务器故障问题 https://serverfault.com/questions/444554/what-does-mean-as-an-ip-address-bracket-colon-colon-bracket。第一部分::fff:是 IPv4 地址的前缀,作为 IPv6 地址的一部分嵌入其中过渡 https://en.wikipedia.org/wiki/IPv6_address#Transition_from_IPv4到 IPv6。

::ffff:A.B.C.D
--v6-- --v4--
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 node/Express 中的 req.ip 返回冒号分隔的 IP 地址? 的相关文章

随机推荐