content: package com.qihoo.finance.chronus.common.util;
  
  import javax.servlet.http.HttpServletRequest;
  
  /**
   * Created by Jeking on 16/3/18.
   */
  public class WebUtils {
      /**
       * 获得用户远程地址
       */
      public static String getRemoteAddr(HttpServletRequest request) {
          // 获取请求主机IP地址,如果通过代理进来，则透过防火墙获取真实IP地址
  
          String ip = request.getHeader("X-Forwarded-For");
  
          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 (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.getHeader("HTTP_CLIENT_IP");
              }
              if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                  ip = request.getHeader("HTTP_X_FORWARDED_FOR");
              }
              if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                  ip = request.getRemoteAddr();
              }
          } else if (ip.length() > 15) {
              String[] ips = ip.split(",");
              for (int index = 0; index < ips.length; index++) {
                  String strIp = ips[index];
                  if (!("unknown".equalsIgnoreCase(strIp))) {
                      ip = strIp;
                      break;
                  }
              }
          }
          return ip;
      }
  
  }
  