java 获取request中的真实ip

来源:互联网 发布:html5微商城源码下载 编辑:程序博客网 时间:2024/06/10 08:57
/** * 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址; * * @param request * @return * @throws IOException */public final static String getIpAddress(HttpServletRequest request){  // 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址  String ip = request.getHeader("X-Forwarded-For");  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;}
原创粉丝点击