package com.zheng.common.util; import javax.servlet.http.HttpServletRequest; import java.util.Enumeration; /** * request工具类 * Created by ZhangShuzheng on 2016/12/12. */ 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; } }