java 获取客户端用户真实ip

来源:互联网 发布:oppo手机怎么优化网络 编辑:程序博客网 时间:2024/06/05 14:30
public final static String getIpAddress(HttpServletRequest request){  // 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址  /*String ip = request.getHeader("X-Forwarded-For");*/  String ip = request.getHeader("x-forwarded-for");  logger.info("x-forwarded-for------------------------------------:" + ip);  if (logger.isInfoEnabled()) {    logger.info("getIpAddress(HttpServletRequest) - X-Forwarded-For - String ip=" + ip);  }  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {      ip = request.getHeader("Proxy-Client-IP");      if (logger.isInfoEnabled()) {        logger.info("getIpAddress(HttpServletRequest) - Proxy-Client-IP - String ip=" + ip);      }    }    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {      ip = request.getHeader("WL-Proxy-Client-IP");      if (logger.isInfoEnabled()) {        logger.info("getIpAddress(HttpServletRequest) - WL-Proxy-Client-IP - String ip=" + ip);      }    }    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {      ip = request.getHeader("HTTP_CLIENT_IP");      if (logger.isInfoEnabled()) {        logger.info("getIpAddress(HttpServletRequest) - HTTP_CLIENT_IP - String ip=" + ip);      }    }    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {      ip = request.getHeader("HTTP_X_FORWARDED_FOR");      if (logger.isInfoEnabled()) {        logger.info("getIpAddress(HttpServletRequest) - HTTP_X_FORWARDED_FOR - String ip=" + ip);      }    }    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {      ip = request.getRemoteAddr();      if (logger.isInfoEnabled()) {        logger.info("getIpAddress(HttpServletRequest) - getRemoteAddr - String ip=" + ip);      }    }  } else if (ip.length() > 15) {    String[] ips = ip.split(",");    for (int index = 0; index < ips.length; index++) {      String strIp = (String) ips[index];      if (!("unknown".equalsIgnoreCase(strIp))) {        ip = strIp;        break;      }    }  }  return ip;}