package com.test.utils;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IpUtils {
/**
* 获取本地(局域网)Ip地址
* @return
*/
public static String getAddrIp(){
InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return addr.getHostAddress();
}
/**
* 获取请求Ip地址
* @param request
* @return
*/
public static String getIpAdrress(HttpServletRequest request) {
String unKnown = "unknown";
String xip = request.getHeader("X-Real-IP");
String xFor = request.getHeader("X-Forwarded-For");
if(StringUtils.isNotEmpty(xFor) && !unKnown.equalsIgnoreCase(xFor)){
//多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = xFor.indexOf(",");
if(index != -1){
return xFor.substring(0,index);
}else{
return xFor;
}
}
xFor = xip;
if(StringUtils.isNotEmpty(xFor) && !unKnown.equalsIgnoreCase(xFor)){
return xFor;
}
if (StringUtils.isBlank(xFor) || unKnown.equalsIgnoreCase(xFor)) {
xFor = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isBlank(xFor) || unKnown.equalsIgnoreCase(xFor)) {
xFor = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isBlank(xFor) || unKnown.equalsIgnoreCase(xFor)) {
xFor = request.getHeader("HTTP_CLIENT_IP");
}
if (StringUtils.isBlank(xFor) || unKnown.equalsIgnoreCase(xFor)) {
xFor = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (StringUtils.isBlank(xFor) || unKnown.equalsIgnoreCase(xFor)) {
xFor = request.getRemoteAddr();
}
return xFor;
}
}
java-获取本地IP/获取请求IP
最新推荐文章于 2023-09-17 22:20:28 发布