在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小时内与您取得联系。