像移动网关一样,iisforward这个ISAPI过滤器也会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。
实际的iisforward附加头如下:
WL-Proxy-Client-IP=211.161.1.239
Proxy-Client-IP=211.161.1.239
X-Forwarded-For=211.161.1.239
WL-Proxy-Client-Keysize=
WL-Proxy-Client-Secretkeysize=
X-WebLogic-Request-ClusterInfo=true
X-WebLogic-KeepAliveSecs=30
X-WebLogic-Force-JVMID=-327089098
WL-Proxy-SSL=false
综上,正确作法如下:
private String getIpAddr() {
String ipAddress = null;
//ipAddress = this.getRequest().getRemoteAddr();
ipAddress = this.getRequest().getHeader("x-forwarded-for");
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = this.getRequest().getHeader("Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = this.getRequest().getHeader("WL-Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = this.getRequest().getRemoteAddr();
if(ipAddress.equals("127.0.0.1")){
//根据网卡取本机配置的IP
InetAddress inet=null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress= inet.getHostAddress();
}
}
//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15
if(ipAddress.indexOf(",")>0){
ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
}
}
return ipAddress;
}
分享到:
相关推荐
查QQ用户IP地址 1.通过FolkOicq查IP FolkOicq是个能给QQ添加IP显示补丁的程序,最新版本FolkQQ0530SE_B2。下载后得到一个Zip的压缩包,用Winzip解压出文件QQ2000.EXE,将它复制到QQ的安装目录下(在这之前最好是...
取得用户IP地址类,能够在用户访问的同时,获得用户登录的IP地址。
QT使用http get的方式得到指定的IP地址地理位置信息http://ip.taobao.com/service/getIpInfo.php?ip=[需要查询的IP],如输入IP192.168.1.1,得到地理位置为中国广东电信
1,本软件由WalNut_Server(服务器端)和WalNut_Clinet(客户端)构成,WalNut_Server主要工作是获得广域网IP地址 并发送给WalNut_Clinet。 2,双击WalNut_Server,运行后会自动隐藏,并开机自启动,按"Ctrl+Alt+F9"唤醒...
通过该工具类可以获得请求的IP地址,适用于后台管理系统的信息统计。
总共才几行代码,很简易的一个用来获取ip地址的软件
通过在网页上写入此代码,可以获取浏览此网页的用户的IP及MAC地址,用来防止恶意注册、投票等。。。。
取得用户IP地址类,能够在用户访问的同时,获得用户登录的IP地址。
使用intellij idea java开发软件,通过servlet获取访问用户的真实ip地址
很简单的ip地址转换 需要的话可以下了看看
在`main`函数中,先从用户输入获得点分十进制形式的IP地址,然后调用`ipToInteger`函数将其转换为无符号整数形式的IP地址,并输出结果。接着,调用`integerToIp`函数将无符号整数形式的IP地址转换为点分十进制形式的...
InnoSetup 获取本机IP地址的方法
解压程序,用eclipse打开,运行tomcat,在地址栏输入http://地址:8080/Test-IP
在网络程序的设计过程中,经常需要根据得到的IP地址取得主机的名称,本实例将演示如何根据用户输入的IP地址获取对应主机的名称。
//获得主机名和IP地址 ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "." ls_IpAddress += string...
1,本软件由WalNut_Server(服务器端)和WalNut_Clinet(客户端)构成,WalNut_Server主要工作是获得广域网IP地址 并发送给WalNut_Clinet。 2,双击WalNut_Server,运行后会自动隐藏,并开机自启动,按"Ctrl+Alt+F9"唤醒...
此程序可以根据用户给出的域名显示出其对应的IP地址(不过,这需要在Internet连接时才有效。若是在局域网中,只要设置了域名,也可以获得其IP地址)
输入文件是IPAddr.txt,该文件描述了不同地区、不同用户获得的公有IP地址块信息。要求将该文件中的数据到线性表中,并完成以下的功能。 1)使用静态链表作为存储结构 2)静态链表使用动态数组,数组容量N根据数据集...
主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache、Squid、nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下
Python根据IP地址查询对应的地理信息的实现原理是利用IP地址库,IP地址库是一个存放IP地址和其对应地理信息的数据库,通过查询IP地址库,就可以得到某IP地址对应的地理信息,比如国家、省份、城市、运营商等。...