嗨 你好
据网上了解到:
在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
如果使用了反向代理软件,将>
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了 请记住我们的团队
//得到用户的浏览器名
String
userbrowser
=
stnextToken();
//得到用户的 *** 作系统名
String
useros
=
stnextToken();
取得本机的信息也可以这样:
*** 作系统信息
SystemgetProperty("osversion");
SystemgetProperty("osarch");浏览器:requestgetHeader("User-Agent")再送个红包requestgetHeader(User-agent)返回客户端浏览器的版本号、类型
getHeader(String
name):获得>
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();
这样不行吗
InetAddress addr = InetAddressgetLocalHost();
String ip=addrgetHostAddress()toString();//获得本机IP
以上就是关于java如何获取https协议的客户端ip地址全部的内容,包括:java如何获取https协议的客户端ip地址、jsp中怎么获得服务器ip和服务端口,在线等、jsp获取客户端局域网的ip等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)