ip=::ffff:192.168.1.42
为什么长这样,不是192.168.1.42 吗? 大神求回答~
通过this.request.ip获得的。
还是自己撸框架好,至少不会骂自己
ipv4在ipv6下的兼容格式,好像
来自酷炫的 CNodeMD
@LinYuhong 这个诟病从express就有了,怎么解决 ?
这个是ipv4到ipv6的映射地址,要取ipv4地址的话,可以指定监听0.0.0.0
http.createServer(app.callback()).listen(port, ‘0.0.0.0’, err=> {
if (err) {
return console.log(http server init error: ${err.message}
);
}
console.log(http server listening at port: ${port}
);
});
或者可以在前面放一个nginx反向代理,通过 proxy_set_header X-Real-IP $remote_addr;
将客户端真实ip地址放到header的x-real-ip字段,然后直接从这个字段来取客户端的ip地址。
换一个角度讲,获取单一ip地址,在真实项目里可用性很高么?
@i5ting 之前项目中用到过,比如显示用户的位置信息,或者根据 ip、设备号限制用户注册数
@enternoder 嗯。怎么获取的呢,求指教
@napster99 你问题里面不是获取到了么,然后通过字符串截取把前面的::ffff: 这个去掉就好啊,貌似 express 里面获取到的 ip 也是这样的,我就是截取处理的……
@enternoder 它返回::1 就一脸蒙逼了,是127.0.0.1 ?
@napster99 哈哈,我没玩过 koa ,我觉得7楼的方式不错
6楼的方式应该可以解决
req.ip.match(/\d+.\d+.\d+.\d+/) 可破
找到网卡,右键点属性,把ipv6取消勾选
学习了
就这格式也没啥关系吧,用正则好了不一定非要严格相等的
ipv6模式,理论上你在listen的时候填写ipv4格式的地址就可以得到你看来正常的地址了。