Java 获取IP地址(源码)

private void 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();
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("http_client_ip");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
// 如果是多级代理,那么取第一个ip为客户ip
if (ip != null && ip.indexOf(",") != -1) {
ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim();
}

// ip = request.getRemoteAddr();
String clientName = request.getRemoteHost();
// int port = request.getRemotePort();
// ip = request.getRemoteUser();

ip = ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;
request.getSession().setAttribute("clientIp", ip);
request.getSession().setAttribute("clientName", clientName);
}

posted on 2019-11-08 14:20  花非花-雾非雾  阅读(452)  评论(0编辑  收藏  举报