Browse Source

fix:获取ip地址存在多个时错误

dev
wangqing 5 years ago
parent
commit
e188696f9d
  1. 16
      tduck-api/src/main/java/com/tduck/cloud/api/util/HttpUtils.java

16
tduck-api/src/main/java/com/tduck/cloud/api/util/HttpUtils.java

@ -1,5 +1,9 @@
package com.tduck.cloud.api.util; package com.tduck.cloud.api.util;
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.CharUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.tduck.cloud.api.web.wrapper.BodyReaderHttpServletRequestWrapper; import com.tduck.cloud.api.web.wrapper.BodyReaderHttpServletRequestWrapper;
import com.tduck.cloud.common.util.JsonUtils; import com.tduck.cloud.common.util.JsonUtils;
@ -10,6 +14,7 @@ import org.springframework.http.MediaType;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
/** /**
* http 工具类 获取请求中的参数 * http 工具类 获取请求中的参数
@ -18,6 +23,7 @@ import java.util.*;
* @date 14:23 2019/5/29 * @date 14:23 2019/5/29
*/ */
public class HttpUtils { public class HttpUtils {
/** /**
* 将URL的参数和body参数合并 * 将URL的参数和body参数合并
* *
@ -113,7 +119,15 @@ public class HttpUtils {
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr(); ip = request.getRemoteAddr();
} }
//"***.***.***.***".length() = 15
if (StrUtil.isNotBlank(ip) && ip.length() > 15) {
if (ip.indexOf(CharUtil.COMMA) > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
}
//处理获取多个ip地址情况 nginx多层代理会出现多个ip 第一个为真实ip地址
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
} }
} }

Loading…
Cancel
Save