import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
/**
* @Title Snippet.java
* @Package com.pro.huanbao.common.utils
* @author wanpu_ly
* @dade 2017年12月11日 下午1:59:05
* @version V1.0 类说明: 获取请求的公网ip
*/
public class GetClientIpUtils {
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
}
Java 常用工具类(6) : 获取请求的公网ip
最新推荐文章于 2024-10-14 17:03:11 发布
本文介绍了一种通过Java实现的实用工具,该工具能够从HTTP请求中获取客户端的真实公网IP地址,尤其适用于经过代理服务器的情况。它首先尝试从'X-Forwarded-For'头部获取IP,如果不可用,则检查'X-Real-IP'头部,最后作为备选方案使用'remoteAddr'获取IP。
1万+

被折叠的 条评论
为什么被折叠?



