2018年1月15日 欢迎观阅Altaba的博客
本人在开发过程中,遇到需要利用nodejs +express + mongodb 去存储数据,数据包括获取请求者的真实ip和域名,从没玩过MongoDB,和很少开发nodejs项目的我为了实现项目需求,自己一个人捣鼓,这其中辛苦可能也只有小公司程序员才能领会到,好,吐槽到此为止,下面为大家介绍怎么通过nodejs express框架去获取到真实的客户端ip和域名。
1:获取客户端的真实IP
let getClientIp = function (req) {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress || '';
};
console.log(getClientIp(req));
let ip = getClientIp(req).match(/\d+.\d+.\d+.\d+/);
console.log(ip);
ip = ip ? ip.join('.') : null;
console.log(ip);
2:获取客户端的
域名
let domain = req.headers['referer'].match(/^(\w+:\/\/)?([^\/]+)/i);
domain = domain ? domain[2].split(':')[0].split('.').slice(-2).join('.') : null;
注意点:获取客户端的ip老版本有一个
req.headers['X-Real-IP'] 方法,该方法有时候会获取不到或者不支持,建议
不去添加到获取ip方法中,本人栽倒在这一个星期(......)
3:如果有人想了解我开发的nodejs +express + mongodb数据抓取的项目的话,记得点赞评论留下邮箱哦