Tomcat 获取客户端真实IP X-Forwarded-For
在使用Tomcat时,如果你的应用程序位于负载均衡器后面,或者通过代理服务器访问,标准的request.getRemoteAddr()
方法可能无法获取到客户端的真实IP地址。这时,负载均衡器或代理服务器会设置X-Forwarded-For
HTTP头来传递原始客户端的IP地址。
以下是一个简单的方法,用于从请求中获取客户端的真实IP地址,考虑到X-Forwarded-For
头:
public String getClientIP(HttpServletRequest request) {
String remoteAddr = "";
if (request.getHeader("X-Forwarded-For") != null) {
remoteAddr = request.getHeader("X-Forwarded-For").split(",")[0];
} else {
remoteAddr = request.getRemoteAddr();
}
return remoteAddr;
}
在你的servlet或过滤器中,你可以这样使用这个方法:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String clientIP = getClientIP(request);
// 使用clientIP进行其他操作...
}
这段代码首先检查X-Forwarded-For
头是否存在,如果存在,它会取第一个IP地址(通常是原始客户端的地址)。如果没有X-Forwarded-For
头,它会回退到request.getRemoteAddr()
来获取IP地址。
评论已关闭