content: package org.superboot.utils;
  
  import javax.servlet.http.HttpServletRequest;
  import java.util.Enumeration;
  
  /**
   * <b> request工具类 </b>
   * <p>
   * 功能描述:
   * </p>
   */
  public class RequestUtil {
  
      /**
       * 移除request指定参数
       *
       * @param request
       * @param paramName
       * @return
       */
      public String removeParam(HttpServletRequest request, String paramName) {
          String queryString = "";
          Enumeration keys = request.getParameterNames();
          while (keys.hasMoreElements()) {
              String key = (String) keys.nextElement();
              if (key.equals(paramName)) {
                  continue;
              }
              if (queryString.equals("")) {
                  queryString = key + "=" + request.getParameter(key);
              } else {
                  queryString += "&" + key + "=" + request.getParameter(key);
              }
          }
          return queryString;
      }
  
      /**
       * 获取请求basePath
       *
       * @param request
       * @return
       */
      public static String getBasePath(HttpServletRequest request) {
          StringBuffer basePath = new StringBuffer();
          String scheme = request.getScheme();
          String domain = request.getServerName();
          int port = request.getServerPort();
          basePath.append(scheme);
          basePath.append("://");
          basePath.append(domain);
          if ("http".equalsIgnoreCase(scheme) && 80 != port) {
              basePath.append(":").append(String.valueOf(port));
          } else if ("https".equalsIgnoreCase(scheme) && port != 443) {
              basePath.append(":").append(String.valueOf(port));
          }
          return basePath.toString();
      }
  
      /**
       * 获取ip工具类，除了getRemoteAddr，其他ip均可伪造
       *
       * @param request
       * @return
       */
      public static String getIpAddr(HttpServletRequest request) {
          String ip = request.getHeader("Cdn-Src-Ip");    // 网宿cdn的真实ip
          if (ip == null || ip.length() == 0 || " unknown".equalsIgnoreCase(ip)) {
              ip = request.getHeader("HTTP_CLIENT_IP");   // 蓝讯cdn的真实ip
          }
          if (ip == null || ip.length() == 0 || " unknown".equalsIgnoreCase(ip)) {
              ip = request.getHeader("X-Forwarded-For");  // 获取代理ip
          }
          if (ip == null || ip.length() == 0 || " unknown".equalsIgnoreCase(ip)) {
              ip = request.getHeader("Proxy-Client-IP"); // 获取代理ip
          }
          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
              ip = request.getHeader("WL-Proxy-Client-IP"); // 获取代理ip
          }
          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
              ip = request.getRemoteAddr(); // 获取真实ip
          }
          return ip;
      }
  
  }
  