问题引出:
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端 IP地址和原来客户端请求的服务器地址。
举例来说,当我们访问口碑网首页hangzhou.jsp时,其实并不是我们浏览器真正访问到了服务器上的hangzhou.jsp 文件,而是先由代理服务器Nagix去访问hagnzhou.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问hangzhou.jsp的,所以hangzhou.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");
}
获得客户端真实IP地址的方法二
public 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.getRemoteAddr();
}
return ip;
}
分享到:
相关推荐
ReadTestquestion<br>7.5. 课程设计作业<br>第8章 日历记事本<br>8.1. 设计内容<br>8.2. 设计要求<br>8.3. 总体设计<br>8.4. 具体设计<br>8.4.1. 运行效果与程序发布<br>8.4.2. 主类CalendarPad<br>8.4.3. 记事本...
获取用户真实IP地址?<br>105.获取请求中的所有参数?<br>106.获取完整的请求URL?<br>107.在重新显示表单时保留用户已经输入的合法数据?<br>108.使用选代器遍历集合<br>109.使用特定字符串对一个字符串进行分割?<br>...
识别代理服务器,更加真实获得用户IP<br> 005.附件上传功能,更加详尽显示文件参数<br> 006.上传非法附件检测,一些修改扩展名上传的将被阻止<br> 007.限制每个用户每天上传文件数,实时统计绝对可靠<br> 008.用户...
-- 显示级过滤,一但设置过滤,对所有贴子有效<br> -- 真实IP提取,能提取部分内部IP<br> -- WDB标签的扩展工具面板方便使用,同时使用JS CACHE,减小载入数据量<br> -- IP可以分区段禁止<br> -- 很容易的禁止不想见...
真实 IP 提取,能提取部分内部IP<br> .IP可以分区段禁止<br> .很容易的禁止不想见的词,不仅在帖子,还包括签名等<br> .主题附带描述<br> .帖子不仅可以转移,而且可以复制,提前<br> .支持最多10个置顶的帖子(由于...
会员基本资料作了以下保留:身份证号,电话,移动电话,真实姓名<br>292. 用户IP绑定功能,让你的账号多了一道强有力的防线,无懈可击,即使被他人知道密<br> 码和账号,仍然无法使用你的账号.<br>293. 非正式会员...
可以使两个不同局域网内的客户机通过国际互连网进行语音通讯,<br>本程序使用点对点方式,不通过任何中介服务器速度快,语音延迟极小,声音清晰逼真,其效果和真实IP电话<br>不相上下,程序界面简洁,操作简单,是在...
功能介绍<br> <br> 1、会员属性增加了:文采值...48、闭屏不良IP<br> 49、关闭社区<br> 50、后台广告管理<br> 51、社区整个版面进行了大幅度调整,使其变的更美观<br> <br> 管理名字:100200330<br> 管理密码:1234567
stopping directory listings and using a different file as the index file.<br>.htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户...
获取用户真实IP地址 获取用户真实IP地址 获取用户真实IP地址
PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置
基于文本存储数据,<br>系统登录采用了Cookie管理<br>网页的显示采用模板化管理<br>多用户留言管理系统<br>真实 IP 提取,使用代理也逃不出手心 :) 但这个功能对一些代理服务器没用 :(<br>悄悄话功能(只有版主才...
java获取用户真实ip
破解用户虚拟ip获取真实的ip,破解被代理的ip直接获取用户真实ip 提高安全性
识别ip获取错误情况,自动截取正确ip信息,用于获取用户请求ip地址
识别代理服务器,更加真实获得用户IP<br> [005].附件上传功能,更加详尽显示文件参数<br> [006].上传非法附件检测,一些修改扩展名上传的将被阻止<br> [007].限制每个用户每天上传文件数,实时统计绝对可靠<br> [008...
第一部分:留言功能介绍<br> 1、留言用户界面(不包括后台系统)可以自由切换为简体中文/英文/繁体中文,是目前网络上唯一可以切换简繁体中文/英文的留言板; (此功能免费版无)<br> 2、留言可以分类(分类可以在后台随意...
java socket nginx tcp转发 用户真实IP测试,文章请看我的博客
经过一般的NAT端口映射后,客户端访问真实用户IP丢失,的处理方法。 利用NAT123端口映射,客户端用户真正IP不丢失。 示例了ASP,.NET,DISCUZ论坛等例子,都是用...经过NAT123端口映射的WEB网站应用用户真实IP不丢失。
真实 IP 提取,能提取部分内部IP <br/>.WDB标签的扩展工具面板方便使用,同时使用JS CACHE,减小载入数据量 <br/>.IP可以分区段禁止 <br/>.很容易的禁止不想见的词,不仅在帖子,还包括签名等 <br/>.主题附带描述 <br/>....