全网整合营销服务商

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

免费咨询热线: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代码示例  # 客户端  # 代理服务器  # 小编  # 都是  # 增加了  # 成了  # 但是在  # 中间层  # 在此  # 给我们  # 当我  # 给大家  # 而我  # 就不能  # 写了  # 当我们  # 所示  # 所述  # 再将  # 给我留言 


相关文章: 营销式网站制作方案,销售哪个网站招聘效果最好?  h5网站制作工具有哪些,h5页面制作工具有哪些?  如何快速搭建安全的FTP站点?  网站制作公司排行榜,抖音怎样做个人官方网站  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何在万网自助建站平台快速创建网站?  开源网站制作软件,开源网站什么意思?  安徽网站建设与外贸建站服务专业定制方案  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在万网主机上快速搭建网站?  建站之星如何快速更换网站模板?  如何选择高效可靠的多用户建站源码资源?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  兔展官网 在线制作,怎样制作微信请帖?  C++如何编写函数模板?(泛型编程入门)  如何获取开源自助建站系统免费下载链接?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何选择CMS系统实现快速建站与SEO优化?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何自定义建站之星模板颜色并下载新样式?  如何配置WinSCP新建站点的密钥验证步骤?  5种Android数据存储方式汇总  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何在服务器上配置二级域名建站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星安装后界面空白如何解决?  建站之星导航如何优化提升用户体验?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  济南企业网站制作公司,济南社保单位网上缴费步骤?  西安大型网站制作公司,西安招聘网站最好的是哪个?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  ,购物网站怎么盈利呢?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何构建满足综合性能需求的优质建站方案?  如何高效配置IIS服务器搭建网站?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  学校为何禁止电信移动建设网站?  已有域名和空间如何快速搭建网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站主机与服务器功能差异如何区分?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  广州美橙建站如何快速搭建多端合一网站?  小型网站制作HTML,*游戏网站怎么搭建?  建站之星后台管理:高效配置与模板优化提升用户体验  Android使用GridView实现日历的简单功能  如何在阿里云完成域名注册与建站? 

您的项目需求

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