在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了x-forwarded-for信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

那么获取真实ip可以分为两个步骤:

1. 获取 HttpServletRequest 对象,该对象中包含了客户端请求的相关信息

2. 从HttpServletRequest 对象中获取到需要的ip地址

@Autowired
private HttpServletRequest request;
    private String getIpAddr(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();   if(ip.equals("127.0.0.1")){     //根据网卡取本机配置的IP     InetAddress inet=null;     try {     inet = InetAddress.getLocalHost();     } catch (Exception 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;   }

后台获取访问端的真实ip地址相关推荐

  1. Java获取请求客户端的真实IP地址

    整理网友的材料,最后有源码,亲测能解决所有java获取IP真实地址的问题 整理的这里: 1.链接1 2.链接2 JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr() ...

  2. 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  3. 获取本机的真实IP地址

    Code: import java.net.InetAddress; import java.net.UnknownHostException; /** * 获取本机的真实IP地址.<br> ...

  4. 获取微信浏览器的真实IP地址

    问题来源 获取用户客户端IP地址是一个很简单的需求.用户打开网页,发送一个HTTP请求,后台从中提取出IP地址. 但是,在使用微信打开网页时,发现获取到的IP地址和在浏览器打开所得到的IP地址不一样. ...

  5. java 获取请求客户端的真实IP地址

    转载自:http://leiyongping88.iteye.com/blog/1545930 用request.getRemoteAddr(); 方法获取的IP地址是:127.0.0.1或192.1 ...

  6. JSP获取浏览者真实IP地址方法

    2019独角兽企业重金招聘Python工程师标准>>> 我们知道在JSP里,获取网页客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都 ...

  7. nginx获取客户端请求的真实IP

    客户端通过nginx代理访问后端jetty服务器时,后端服务器收到的请求信息中只有nginx代理的IP信息,无法看到client的真实IP, 所以nginx需要获取客户端请求头的真实IP地址进行传递, ...

  8. JAVA如何获取访问真实IP地址?

    解决方法: 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址,如果没有代理,则获取真实ip public static String getIp(HttpServletReques ...

  9. Java如何获取客户端主机真实IP地址

    项目开发中,小编遇到一种需求,就是将系统项目与某台主机的IP地址绑定,让该系统只能在某台主机上使用,不要问小编为什么,我也是第一次遇到这么奇怪的需求,当然也不要问小编为什么不使用权限控制,现在的权限控 ...

最新文章

  1. Java快速创建大量对象_3分钟 快速理解JVM创建对象的步骤!
  2. 2018-07-12 第六十七天 EsayUI
  3. SAP 获取采购订单表头长文本
  4. AjaxControlToolkit中CalendarExtender日历控件的用法
  5. python cocos2d菜鸟教程_(译)cocos2d菜单教程:第一部分
  6. 用json 数据生成mysql 表_根据json数据生成表格
  7. 带权并查集--hdu3047 ZJnu stadium
  8. 数据结构与算法(基于C++语法实现)
  9. python 字符串操作list【:-1】的几种用法
  10. prd移动端通用产品需求文档+Axure高保真app社交订餐通用prd文档+产品业务说明+PRD功能性需求+移动端公工通用模板说明+需求分析+竞品分析+产品结构图+产品业务流程图+产品信息图+餐饮系统
  11. 微信公众平台开发4-长链接转短链接口调用实例(含源码)
  12. 【实践】腾讯PCG推荐系统应用实践(附PPT下载链接)
  13. 归并排序验证性实验_性能优化技巧:有序归并
  14. 1、win10下的Docker+Redis 的下载及简单使用
  15. java课程设计代码_java(课程设计之记事本界面部分代码公布)
  16. X86工控机虚拟显示器设置(nomachine远程桌面)
  17. 小程序云开发——列表页和详情页
  18. 可调稳压电源lm317实验报告_LM317可调稳压电源电路图
  19. 微信扫码登录详细操作流程(微信公众平台开发)
  20. SLAM中的泰勒展开

热门文章

  1. 批量注册163邮箱的代码
  2. 雷迪9000使用说明_雷迪司UPS监控软件使用说明
  3. 笔记本电脑怎样重装系统
  4. 为什么很多人公司都在招测试开发?
  5. python注销代码_python怎么注销代码_如何从一个简单的web应用程序注销。在CherryPy,Python中...
  6. JavaScript词汇表
  7. 【java毕业设计】基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码)——个人博客系统
  8. 电子商务新发展 海峡两岸智富惠论坛今日在厦召开
  9. 埃拉托色尼筛选法c语言求最大公约数,用埃拉托色尼筛算法求两个数最大公约数C++的实现...
  10. poj1753 解题思路