全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java根据Request获取客户端IP

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

如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr() 方法获取的IP地址是:127.0.0.1 或 192.168.1.110 ,而并不是客户端的真实IP。

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问http://www.xxx.com/index.jsp/ 时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046/index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr() 的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

于是可得出获得客户端真实IP地址的方法一:

public String getRemortIP(HttpServletRequest request) {
 if (request.getHeader("x-forwarded-for") == null) {
 return request.getRemoteAddr();
 }
 return request.getHeader("x-forwarded-for");
}

可是当我访问http://www.xxx.com/index.jsp/ 时,返回的IP地址始终是unknown,也并不是如上所示的127.0.0.1 或 192.168.1.110 了,而我访问http://192.168.1.110:2046/index.jsp 时,则能返回客户端的真实IP地址,写了个方法去验证。原因出在了Squid上。squid.conf 的配制文件 forwarded_for 项默认是为on,如果 forwarded_for 设成了 off  则:X-Forwarded-For: unknown

于是可得出获得客户端真实IP地址的方法二:

public String getRemoteHost(javax.servlet.http.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.getRemoteAddr();
 }
 return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
}

以上所述是小编给大家介绍的Java根据Request获取客户端IP,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# request  # 获取客户端ip  # 客户端ip  # Java利用Request请求如何获取IP地址对应的省份、城市详解  # Java利用Request请求获取IP地址的方法详解  # 使用JavaScript获取Request中参数的值方法  # Java中使用HttpRequest获取用户真实IP地址  # Javascript Request获取请求参数如何实现  # 基于request获取访问者真实IP代码示例  # 客户端  # 代理服务器  # 小编  # 都是  # 增加了  # 成了  # 但是在  # 中间层  # 在此  # 给我们  # 当我  # 给大家  # 而我  # 就不能  # 写了  # 当我们  # 所示  # 所述  # 再将  # 给我留言 


相关文章: 建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何选择高效便捷的WAP商城建站系统?  如何注册花生壳免费域名并搭建个人网站?  教学网站制作软件,学习*后期制作的网站有哪些?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  javascript基本数据类型及类型检测常用方法小结  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何通过虚拟主机快速搭建个人网站?  *服务器网站为何频现安全漏洞?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何构建满足综合性能需求的优质建站方案?  建站之星后台管理系统如何操作?  如何高效配置IIS服务器搭建网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  焦点电影公司作品,电影焦点结局是什么?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何配置支付宝与微信支付功能?  建站之星备案流程有哪些注意事项?  如何正确选择百度移动适配建站域名?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  再谈Python中的字符串与字符编码(推荐)  C++中引用和指针有什么区别?(代码说明)  香港服务器租用每月最低只需15元?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  ppt制作免费网站有哪些,ppt模板免费下载网站?  如何通过cPanel快速搭建网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  历史网站制作软件,华为如何找回被删除的网站?  如何批量查询域名的建站时间记录?  建站OpenVZ教程与优化策略:配置指南与性能提升  在线教育网站制作平台,山西立德教育官网?  制作网站的模板软件,网站怎么建设?  如何快速生成专业多端适配建站电话?  如何用搬瓦工VPS快速搭建个人网站?  如何通过VPS搭建网站快速盈利?  XML的“混合内容”是什么 怎么用DTD或XSD定义  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  建站主机选购指南:核心配置与性价比推荐解析  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何在阿里云域名上完成建站全流程?  创业网站制作流程,创业网站可靠吗?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何用花生壳三步快速搭建专属网站?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何快速配置高效服务器建站软件?  如何设计高效校园网站?  建站之星CMS五站合一模板配置与SEO优化指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。