import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
public class IpUtil {
public static String getIP(final HttpServletRequest req) throws Exception {
if (req == null) {
throw (new Exception("getIpAddr method HttpServletRequest Object is null"));
}
String ipStr = req.getHeader("x-forwarded-for");
if (StringUtils.isEmpty(ipStr) || "unknown".equalsIgnoreCase(ipStr)) {
ipStr = req.getHeader("Proxy-Client-IP");
}
if (StringUtils.isEmpty(ipStr) || "unknown".equalsIgnoreCase(ipStr)) {
ipStr = req.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isEmpty(ipStr) || "unknown".equalsIgnoreCase(ipStr)) {
ipStr = req.getRemoteAddr();
}
// 多个路由时,取第一个非unknown的ip
final String[] arr = ipStr.split(",");
for (final String str : arr) {
if (!"unknown".equalsIgnoreCase(str)) {
ipStr = str;
break;
}
}
// 目的是将localhost访问对应的ip 0:0:0:0:0:0:0:1 转换成 127.0.0.1
return ipStr.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipStr;
}
}
最后修改:2023 年 07 月 21 日
© 允许规范转载