CNode

koa 框架获得的ip地址,长得为毛如此恶心?

问答
Nnapster99发布于10 年前最后回复10 年前19 回复19539 浏览0 收藏

ip=::ffff:192.168.1.42

为什么长这样,不是192.168.1.42 吗? 大神求回答~

查看回复

回复 (19)

N
napster99#1·10 年前

通过this.request.ip获得的。

C
captainblue2013#2·10 年前

还是自己撸框架好,至少不会骂自己

T
TakWolf#3·10 年前

ipv4在ipv6下的兼容格式,好像

来自酷炫的 CNodeMD

N
napster99#5·10 年前
引用 LinYuhonghttps://github.com/koajs/koa/blob/master/lib/request.js L372

@LinYuhong 这个诟病从express就有了,怎么解决 ?

B
Binaryify#7·10 年前

req.ip.match(/\d+.\d+.\d+.\d+/) 可破

L
leim#8·10 年前

这个是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}); });

L
leim#9·10 年前

或者可以在前面放一个nginx反向代理,通过 proxy_set_header X-Real-IP $remote_addr;

将客户端真实ip地址放到header的x-real-ip字段,然后直接从这个字段来取客户端的ip地址。

I
i5ting#10·10 年前

换一个角度讲,获取单一ip地址,在真实项目里可用性很高么?

E
enternoder#11·10 年前
引用 i5ting换一个角度讲,获取单一ip地址,在真实项目里可用性很高么?

@i5ting 之前项目中用到过,比如显示用户的位置信息,或者根据 ip、设备号限制用户注册数

E
enternoder#13·10 年前
引用 napster99@enternoder 嗯。怎么获取的呢,求指教

@napster99 你问题里面不是获取到了么,然后通过字符串截取把前面的::ffff: 这个去掉就好啊,貌似 express 里面获取到的 ip 也是这样的,我就是截取处理的……

E
enternoder#14·10 年前
引用 napster99@enternoder 它返回::1 就一脸蒙逼了,是127.0.0.1 ?

@napster99 哈哈,我没玩过 koa ,我觉得7楼的方式不错

I
im-here#15·10 年前

6楼的方式应该可以解决

Y
yakczh#16·10 年前

找到网卡,右键点属性,把ipv6取消勾选

L
lunix01#17·10 年前

学习了

Z
zhangjh#18·10 年前

就这格式也没啥关系吧,用正则好了不一定非要严格相等的

S
stonephp#19·10 年前

ipv6模式,理论上你在listen的时候填写ipv4格式的地址就可以得到你看来正常的地址了。

参与回复
登录后即可参与回复。登录