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_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_CLUSTER_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_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_FORWARDED");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_VIA");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("REMOTE_ADDR");
} if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
if (ip.equals("127.0.0.1")) {
// 根据网卡取本机配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ip = inet.getHostAddress();
}
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ip != null && ip.length() > 15) {
if (ip.indexOf(",") > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
}
return ip;
}

  

最新文章

  1. 监控 SQL Server (2005/2008) 的运行状况
  2. 《理解 ES6》阅读整理:函数(Functions)(五)Name Property
  3. android之HttpClient
  4. fedora Server 21 安装 Opera 29.0.1795.47
  5. Excel列表部分列表隐藏与取消隐藏
  6. jar包和war包的区别:
  7. ActionBar本部分适用述评
  8. switch case异常处理机制
  9. 2016年中国大学生程序设计竞赛(杭州)1006 Four Operations
  10. layui中进行form表单一些问题
  11. 服务注册中心,Eureka比Zookeeper好在哪里?
  12. [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10
  13. OPENQUERY (Transact-SQL)
  14. PGPDesktop在win7环境下的安装和使用
  15. Python学习笔记第七周
  16. LeetCode OJ 79. Word Search
  17. mysql存储过程学习第一天
  18. aaronyang的百度地图API之LBS云与.NET开发 Javascript API 2.0【基本地图的操作】
  19. SyntaxError: Non-ASCII character '\xe5' in file D:/pcode/xx.py on line 21, but no encoding declared
  20. python学习之__new__()

热门文章

  1. 【虫师】【selenium】参数化
  2. java-mybaits-011-mybatis-拦截器计算耗时
  3. python3中替换python2中cmp函数
  4. NLP总览
  5. python+requests接口自动化完整项目设计源码(一)
  6. Linux系统——DHCP
  7. 通用Dao方法
  8. Echarts使用及动态加载图表数据 折线图X轴数据动态加载
  9. cmd重启服务器,有时不想去机房,并且远程桌面连接登录不上了
  10. 134. Gas Station(数学定理依赖题)