为了账号安全,请及时绑定邮箱和手机立即绑定

如何在节点中确定用户的IP地址

如何在节点中确定用户的IP地址

守候你守候我 2019-07-09 18:10:55
如何在节点中确定用户的IP地址如何从控制器内确定给定请求的IP地址?例如(以明示方式):app.post('/get/ip/address', function (req, res) {     // need access to IP address here})
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

在你的request对象有一个名为connection,这是net.Socket对象。nets.ocket对象具有一个属性remoteAddress因此,您应该能够通过以下调用获得IP:

request.connection.remoteAddress

见文件http

在注释中指出的那样,如果服务器位于代理后面,获取远程IP的正确方法是request.headers['x-forwarded-for']


查看完整回答
反对 回复 2019-07-09
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

var ip = req.headers['x-forwarded-for'] || 
     req.connection.remoteAddress || 
     req.socket.remoteAddress ||
     (req.connection.socket ? req.connection.socket.remoteAddress : null);

注意,有时您可以在req.headers['x-forwarded-for']..另外,x-forwarded-for头将不会总是被设置,这可能会抛出一个错误。

该领域的一般格式是:

X-转发-用于: client, proxy1, proxy2, proxy3

其中值是一个逗号+分隔的IP地址列表,其中最左边的是原始客户端,并且每个传递请求的连续代理都添加了它接收请求的IP地址。在本例中,请求通过proxy1proxy2,然后proxy3proxy3显示为请求的远程地址。

这是阿纳夫·古普塔修复马丁已在以下评论中对下列情况提出建议:x-forwarded-for未设置:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop() || 
         req.connection.remoteAddress || 
         req.socket.remoteAddress || 
         req.connection.socket.remoteAddress


查看完整回答
反对 回复 2019-07-09
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

如果用快车.。

req.ip

我在查这个,然后我就像在等,我在用快车。呃。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 1209 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信