java如何获取用户真实的ip
java如何获取用户真实的ip
原来太熟悉了会陌生
2021-01-14 19:28:00
共 2 个回答
掌灯师
2021-01-14 21:07:00
1、如果服务器如果没有采用反向代理,而且客户端没有用正向代理的话,那么可以获取客户端的真实IP地址request.getRemoteAddr()
2、如果服务器如果没有采用反向代理,而且客户端有用正向代理的话,那么通过request.getRemoteAddr()获取客户端的IP地址是客户端 的代理服务器的地址,并不是客户端的真实地址,
3、如果客户端使用的是多层代理的话,服务器获得的客户端地址是客户端的最外围代理服务器的地址如果服务器如果采用反向代理服务器,不管客户端采用的是何种方式访问服务器。
//获得客户端真实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;  
}
阅读原文