<hr/>
在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 requestgetRemoteAddr()方法获取的IP地址是:127001或 1921681110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的>public static IPAddress GetMyselfIP()
{
IPHostEntry ipHost = DnsResolve(DnsGetHostName());
IPAddress ipAddr = ipHostAddressList[0];
return ipAddr;
}
在客户端上运行这个方法能够获得客户端的IP,然后发到服务器端就成了取得反向代理的真实IP的方法有两种:
一,public
String
getRemortIP(>JSP获取用户真实IP地址
(大致原理是这样,但我没有测试过。)
String strIP = "";
String strFF = requestgetHeader("X_Forwarded_For");
if(strFFequals("") || strFF"unknown")>=0 ){
strIP = requestgetLocalAddr();
} else if (strFFindexOf(",")>=0 ){
strIP = strFFsubstring(0, strFFindexOf(","));
} else if (strFFindexOf(";")>=0 ){
strIP = strFFsubstring(0, strFFindexOf(";"));
} else {
strIP = strFF;
}
strIP = strIPsubstring(0, 30)trim();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)