12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package cn.com.qmth.mps.util;
- import org.apache.commons.lang3.StringUtils;
- import javax.servlet.http.HttpServletRequest;
- /**
- * @Description 获取ip工具类
- */
- public class IpUtil {
- /**
- * 获取过程ip(默认不包含代理ip)
- *
- * @param request
- * @return
- */
- public static String getRemoteIp(HttpServletRequest request) {
- return getRemoteIp(request, true);
- }
- /**
- * excludeProxyIp
- *
- * @param request
- * @param excludeProxyIp 是否排除代理ip
- * @return
- */
- public static String getRemoteIp(HttpServletRequest request, boolean excludeProxyIp) {
- String ip = request.getHeader("X-Forwarded-For");
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("x-real-ip");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("HTTP_CLIENT_IP");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("HTTP_X_FORWARDED_FOR");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- }
- if (excludeProxyIp) {
- //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
- if (ip != null && ip.length() > 15) { //"***.***.***.***".length() = 15
- if (ip.indexOf(",") > 0) {
- ip = ip.substring(0, ip.indexOf(","));
- }
- }
- }
- if("0:0:0:0:0:0:0:1".equals(ip)) {
- ip="127.0.0.1";
- }
- return ip;
- }
- }
|