private static final String NUKNOWN = "unknown";
private static final String[] ADDR_HEADER = { "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", "X-Real-IP" };
/**
* 获取客户端真实IP
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String addr = null;
for (String header : ADDR_HEADER) {
if (StringUtil.isEmpty(addr) || NUKNOWN.equalsIgnoreCase(addr)) {
addr = request.getHeader(header);
} else {
break;
}
}
if (StringUtil.isEmpty(addr) || NUKNOWN.equalsIgnoreCase(addr)) {
addr = request.getRemoteAddr();
if(addr.equals("127.0.0.1") || addr.equals("0:0:0:0:0:0:0:1")){
//根据网卡取本机配置的IP
InetAddress inet=null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
addr= inet.getHostAddress();
}
} else {
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按','分割
int i = addr.indexOf(",");
if (i > 0) {
addr = addr.substring(0, i);
}
}
return addr;
}
JAVA获取IP地址代码
最新推荐文章于 2023-09-17 22:20:28 发布