【问题标题】:Why is req.ip in node/Express returning colon separated IP addresses?为什么 node/Express 中的 req.ip 返回冒号分隔的 IP 地址?
【发布时间】:2015-10-14 08:56:06
【问题描述】:

我正在尝试记录远程客户端 IP。听起来很基础,Express 在请求对象上提供了“ip”属性,如 req.ip,以获取此信息。此外,还有 req.ips 从涉及代理的 X-Forwarded-For 获取多个 IP 地址。我还尝试了 npm 模块request-ip。我的问题是它们都返回客户端 IP 地址,如

 ::ffff:A.B.C.D

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

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

【问题讨论】:

  • 看起来您正在获取 IPv6 地址,仅此而已。
  • @Edwin Dalorzo 就是这样!如果您将此作为答案发布,我会接受。我想一定有办法获得 IPv4 格式,但更重要的是我想知道输出是什么,而你回答了这个问题。

标签: node.js express


【解决方案1】:

双冒号:: 是IPv6 中的一种快捷方式,用于表示this Server Fault question 中所说的一串零。第一部分::fff: 是作为the transition 到IPv6 的一部分嵌入在IPv6 地址中的IPv4 地址前缀。

::ffff:A.B.C.D
--v6-- --v4--

【讨论】:

  • 我赞成你的回答。如果 Edwin Dalorzo 没有发布答案,我会接受你的答案。他首先发布了答案,尽管是作为评论。
猜你喜欢
  • 2021-01-05
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2017-07-30
  • 2021-06-28
  • 2017-03-18
  • 1970-01-01
相关资源
最近更新 更多