项目需求: 操作日志记录操作人ip地址
实现方法
//获取ip地址
public static String getClientIp(HttpServletRequest request) {
//X-Forwarded-For是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段
String ip = request.getHeader("X-Forwarded-For");
//获取真实ip地址,反向代理时,获取第一个ip
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
int index = ip.indexOf(44);
return index != -1 ? ip.substring(0, index) : ip;
} else {
//没有使用反向代理,获取真实IP地址
ip = request.getHeader("X-Real-IP");
return StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip) ? ip : request.getRemoteAddr();
}
}
本文介绍了一种在Web服务器上获取客户端真实IP地址的方法,通过解析HTTP请求头中的X-Forwarded-For和X-Real-IP字段,适用于直接连接和反向代理场景。
1万+

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



