Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Express.js req.ip返回:: ffff:127.0.0.1大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在尝试获取请求的用户的IP。问题是IP是返回:: ffff:127.0.0.1而不是127.0.0.1。我尝试使用受信任的代理选项(然不使用代理),req.ips是空白的。使用4.x Express.js。

router.get('/',function(req,res,next) {
    console.log('ip',req.ip)
    res.send({})
});

解决方法

:: ffff:是放置在IPv6(128位)空间内的IPv4(32位)地址的子网前缀。 IPv6分为两部分,子网前缀和接口后缀。每个64位长,或4组4个十六进制字符。

在IPv6中,允许删除前导零,然后删除连续零,意思:: ffff:实际上转换为0000:0000:ffff:0000,此地址已被指定为IPv4到IPv6子网前缀,因此任何IPv6处理器将理解它使用IPv4地址并相应地处理它。

在不久的将来,IP地址将全部是IPv6,这是因为我们在IPv4地址空间中几乎没有数字(42亿,减去一些用于其他目的的空间)。

使用IPv6命名空间开始寻址IP地址很重要,因此在代码包括:: ffff:因为将来在这些冒号之间会有真正的十六进制数据。如果出于美学原因而将其删除,则当它切换到IPv6网络或遇到IPv6地址时,您的代码将中断。

一些网络当前正在运行IPv6,您很快将面临IPv6 IP地址;使现在的飞跃或冒险破坏你的代码在未来。

TL; DR(短)版本的事情是:@R_727_6944@。不要更改它,它是IPv4地址的IPv6版本。

node.js – Express.js req.ip返回:: ffff:127.0.0.1


@L_674_12@

如果你想让你的代码与IPv6兼容,你所要做的就是检查:: ffff:前缀…如果存在,删除它,处理余数为IPv4 … if :: ffff:doesn’ t存在,它是一个IPv6地址,需要这样处理。
您可以通过查看字符串中是否包含句点进行仔细检查,如果是,则为IPv4。

记住除了需要对IP地址进行调整之外的所有事情,你只是记录IP,对吧?它对解析器和日志聚合很重要,以期望:: ffff:127.0.01等。除非你需要改变IP,只要把它作为你收到的。

大佬总结

以上是大佬教程为你收集整理的node.js – Express.js req.ip返回:: ffff:127.0.0.1全部内容,希望文章能够帮你解决node.js – Express.js req.ip返回:: ffff:127.0.0.1所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。