(大致原理是这样,但我没有测试过。)
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();
String ip = requestgetHeader("x-forwarded-for");
if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {
ip = requestgetHeader("Proxy-Client-IP");
}
if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {
ip = requestgetHeader("WL-Proxy-Client-IP");
}
if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {
ip = requestgetRemoteAddr();
}
这样获取的ip就是内网的IP了 请记住我们的团队
app获取到对方的后端ip
在 jsp 里,获取客户端的IP地址的方法是: request getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache, Squid 等 反向代理 软件就不能获取到客户端的真实IP地址了。
如果使用了反向代理软件,将的URL反向代理为的URL时,用requestgetRemoteAddr()方法获取的IP地址是:127001或1921681110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的>
这样不行吗
InetAddress addr = InetAddressgetLocalHost();
String ip=addrgetHostAddress()toString();//获得本机IP
/ 构造函数 / privateInternetProtocol(){ } / 获取客户端IP地址<br> 支持多级反向代理 @paramrequest >
以上就是关于在JSP中如何得到设置了代理服务器的客户端的真实IP全部的内容,包括:在JSP中如何得到设置了代理服务器的客户端的真实IP、jsp获取客户端局域网的ip、app获取到对方的后端ip等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)