JAVA:获取用户访问ip地址
获取用户真实IP地址:不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址;
可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,
则真实Id为:192.168.1.100
工具代码
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;import javax.servlet.http.HttpServletRequest;/*** 获取用户访问ip地址*/
public class IpUtil {public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); }// 获取到多个ip时取第一个作为客户端真实ipif (StringUtils.isNotEmpty(ip) && ip.contains(",")) {String[] ipArray = ip.split(",");if (ArrayUtils.isNotEmpty(ipArray)) {ip = ipArray[0];}}return ip; }
}
Controller调用代码
@RequestMapping("/urlName.do")
public String MethodName(HttpServletRequest request){String ip = IpUtil.getIpAddress(request);return ip;
}
参考文章: http://developer.51cto.com/art/201111/305181.htm
JAVA:获取用户访问ip地址相关推荐
- PHP获取用户访问IP地址的5种方法
PHP获取用户访问IP地址的5种方法: //方法1: <?php ...
- java获取用户真实IP地址
/*** 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址.* 可是,如果通过了多级反向代理的话,X-Forwarded ...
- java获取用户ip_Java获取用户访问IP及地理位置的方法详解
本文实例讲述了Java获取用户访问IP及地理位置的方法.分享给大家供大家参考,具体如下: 获取用户访问的IP地址 /** * 获取用户ip地址 * @return */ public static S ...
- java 获取用户的MAC地址多种方法实例详解
java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...
- CDN下nginx获取用户真实IP地址
为什么80%的码农都做不了架构师?>>> 随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能 ...
- PHP获取用户真实IP地址
PHP获取用户真实IP地址 <?phpfunction getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SER ...
- 用java获取本机IP地址
在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可以得到,但自己想写一个程序获取一下,到网上搜索了一下ja ...
- java获取客户端的IP地址工具类
java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...
- DJANGO获取用户访问IP
使用django来获取用户访问的IP地址,如果用户是正常情况下 1 request.META['REMOTE_ADDR'] 可以获得用户的IP地址.但是有些网站服务器会使用ngix等代理http,或者 ...
最新文章
- 漫话:如何给女朋友解释为什么 Java 中1000==1000为 false,而100==100为 true?
- 云计算技术 — 云计算的商业模式与部署模式
- verilog换行太长代码_Verilog 之 File I/O task and function
- alexa技能个数_如何改善Alexa技能的对话流程
- python set函数原理,Python之set详解
- 【吴恩达机器学习】学习笔记——4多元线性回归
- 弱网条件下基于阻抗小扰动稳定性分析,小信号模型,阻抗扫描(电容电流反馈有源阻尼),单逆变器SRF-PLL
- wep加密方式是什么_什么是WEP(有线等效保密)?
- 一次累加序列折线图解释_如何解释非累加性措施第1部分按比例分配
- [机器学习]随机森林源码(python)
- 简述计算机桌面背景更换的流程,苹果电脑桌面壁纸怎么更换【详细步骤】
- 传统企业触网,打造完美用户体验是关键
- 淘宝 美团 评论标签效果
- 前端工程师必须知道的网络知识(一)
- 总结下自己的入门学黑之路
- MyBatis-Plus代码生成器(新)使用
- python plc_基于python的西门子plc数据采集系统
- 第11节:唤醒心灵的巨人
- hive中设置jobname
- 父母必看(现代教育与私塾教育的面面观)
热门文章
- 注意力是PEOPLE最宝贵的财富
- 千里走单骑:02-北京到上海骑记--Day1.首日征程
- mysql数据库编程题题_mysql数据库编程题测试
- 《生物信息学:导论与方法》----变异的功能预测----听课笔记(十一)
- CRMEB-知识付费系统程序配置之直播配置(方法二下)
- Jquery之遍历元素
- html向下的三角符号怎么打,哪些字符可用于上/下三角形(无茎的箭头)以HTML显示?...
- java加锁与同步方法
- 【第二届青训营-寒假前端场】- 「WebGL基础」笔记
- linux avg 强力卸载,彻底卸载AVG维护清理软件