我需要在JSP页面中获取客户端的IP地址。我尝试了以下几种方法:
request.getRemoteAddr()
request.getHeader("X_FORWARDED_FOR")
request.getHeader("HTTP_CLIENT_IP")
request.getHeader("WL-Proxy-Client-IP")
request.getHeader("Proxy-Client-IP")
request.getHeader("REMOTE_ADDR")但是,这些方法都没有返回所需的IP地址。如何在JSP页面中获取客户端的IP地址?
发布于 2014-03-19 18:32:45
为了获得客户机的IP地址,我使用了以下方法
<% String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
%>希望这对我们有所帮助,请留下反馈。
发布于 2012-07-27 15:42:00
<%
out.print( request.getRemoteAddr() );
out.print( request.getRemoteHost() );
%>如果客户端位于代理之后,您可能无法获得真正的客户端IP,您将获得代理的IP,而不是客户端的IP。然而,代理可以在特殊的HTTP报头中包括请求客户端IP。
<%
out.print( request.getHeader("x-forwarded-for") );
%>发布于 2012-07-27 15:49:38
您的应用程序服务器位于负载均衡器、代理服务器还是web服务器之后?仅举个例子;F5负载均衡器使用"rlnclientipaddr“头公开客户端IP地址:
request.getHeader("rlnclientipaddr");https://stackoverflow.com/questions/11683246
复制相似问题