项目需求: 操作日志记录操作人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();
}
}