日期:2014-05-16  浏览次数:20619 次

使用代理后,使用在JSP中获取真实IP

使用代理后

request.getRemoteAddr(); 取到的不是真正的客户端IP地址而是代理服务器的地址

可以遍历一下Header信息,一般会在某个Header字段中写入真实客户的IP地址

<%
response.setContentType("text/plain");
out.println("Request Headers:");
Enumeration names = request.getHeaderNames();
while (names.hasMoreElements()) {
  String name = (String) names.nextElement();
  Enumeration values = request.getHeaders(name); // support multiple values
  if (values != null) {
    while (values.hasMoreElements()) {
      String value = (String) values.nextElement();
      out.println("<br/>"+ name + ": " + value);
    }
  }
}

%>
?

一般来说会是这个

out.println("REAL IP:" + request.getHeader("x-remote-addr"));