package com.huacai.web.client.util;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
public final class IPUtils {
/** 默认空值 */
private static final String EMPTY = "-";
/**
* 得到访客真实IP地址
*/
public static String getRemoteTrueIp(HttpServletRequest request) {
String remote_ip = EMPTY;
// 1.首先判断是否有CDN头部
remote_ip = request.getHeader("Cdn-Src-Ip");
if(StringUtils.isNotEmpty(remote_ip) && !"unknown".equalsIgnoreCase(remote_ip) && !EMPTY.equals(remote_ip)){
return remote_ip;
}
// 2.其次判断是否有代理
remote_ip = request.getHeader("x-forwarded-for");
if(StringUtils.isNotEmpty(remote_ip) && !"unknown".equalsIgnoreCase(remote_ip) && !EMPTY.equals(remote_ip)){
String[] ips = remote_ip.split("\\,");
// 2.1 如果存在多级代理则只去第一个
if (ips != null && ips.length > 1) {
remote_ip = ips[0];
}
return remote_ip;
}
// 3.都没有则正常取得访客IP
remote_ip = request.getRemoteAddr();
if(StringUtils.isNotEmpty(remote_ip) && !"unknown".equalsIgnoreCase(remote_ip) && !EMPTY.equals(remote_ip)) {
return remote_ip;
}
// 4.都找不到直接返回
return remote_ip;
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。