浏览代码

获取ip工具类

shuzheng 9 年之前
父节点
当前提交
7331751e26
共有 1 个文件被更改,包括 27 次插入2 次删除
  1. 27 2
      zheng-common/src/main/java/com/zheng/common/util/RequestUtil.java

+ 27 - 2
zheng-common/src/main/java/com/zheng/common/util/RequestUtil.java

@@ -37,7 +37,7 @@ public class RequestUtil {
 	 * @param request
 	 * @param request
 	 * @return
 	 * @return
 	 */
 	 */
-	public String getBasePath(HttpServletRequest request) {
+	public static String getBasePath(HttpServletRequest request) {
 		StringBuffer basePath = new StringBuffer();
 		StringBuffer basePath = new StringBuffer();
 		String scheme = request.getScheme();
 		String scheme = request.getScheme();
 		String domain = request.getServerName();
 		String domain = request.getServerName();
@@ -52,5 +52,30 @@ public class RequestUtil {
 		}
 		}
 		return basePath.toString();
 		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;
+	}
+
 }
 }