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;
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 com.tduck.cloud.api.web.wrapper.BodyReaderHttpServletRequestWrapper;
import com.tduck.cloud.common.util.JsonUtils;
@ -10,6 +14,7 @@ import org.springframework.http.MediaType;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.regex.Pattern;
/**
* http 工具类 获取请求中的参数
@ -18,6 +23,7 @@ import java.util.*;
* @date 14:23 2019/5/29
*/
public class HttpUtils {
/**
* 将URL的参数和body参数合并
*
@ -113,7 +119,15 @@ public class HttpUtils {
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
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;
}
}

Loading…
Cancel
Save