node.js - 通过 NodeJS express 仅获取 IPv4 ips

标签 node.js express centos ipv6 ipv4

我有一个 NodeJS express 服务在 Centos 上运行并监听 GET 请求,我需要识别用户的 IP。

目前,我正在使用这个脚本

ip = req.headers['x-forwarded-for'] ||
      req.connection.remoteAddress ||
      req.socket.remoteAddress ||
      req.connection.socket.remoteAddress

问题是有时返回的 IP 是 IPv4,有时是 IPv6。有没有办法只获取 IPv4 IP?

最佳答案

更新

根据 Micheal 的评论,如果客户端通过 ipv6 连接,则不会有 ipv4 地址,因此您必须准备好接受 ipv6。

在服务器上监听时指定 ipv4 参见 doc

.listen(port, '0.0.0.0');

关于node.js - 通过 NodeJS express 仅获取 IPv4 ips,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50855419/

相关文章:

sql-server - NodeJS 使用node-mssql 连接到sql server 不起作用

youtube - 未找到 ffprobe 或 avprobe。请安装一个

centos - SpamAssassin - 具有多个规则的自定义过滤器?

bash - 在centos上禁用可视铃

node.js - 如何修复 Node.js 应用程序中的 cairo 错误 : Assertion failed: (angle_max >= angle_min)

javascript - 为什么nodejs中的sleep不能按预期工作

mysql - NodeJS Express MySQL post 请求抛出 "Cannot set headers after they are sent to the client"

angularjs - 我想使用node.js将数据写入mongodb数据库

mysql - 模型 MVC Express API - 错误 "connection.query is not a function"

json - Mongoose查询结果是只读的吗?