项目场景:
在做记录网站客流量的功能的时候,我想通过记录ip判断这个用户今天是不是第一次登录,记录的ip地址放在上下文中,通过设置定时任务清理每天记录的ip
问题描述:
服务器一直拿到的ip地址是127.0.0.1
原因分析:
通过看来很多博客发现原来是前端设置了代理,导致后台一直拿不到真实的ip地址,原来是这样
解决方案:
前端取消代理就可以了。
这里附上拿到真实ip的代码
String ip = req.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getRemoteAddr();
}
if (ip.indexOf(",") != -1) {
String[] ips = ip.split(",");
ip = ips[0].trim();
}