由于用户可能采用了代理,或者服务器处于负载均衡的环境下,只调用HttpServletRequest.getRemoteAddr()得到的地址不一定是想要的数据。
某些代理会在HTTP请求中加入一些头信息,通过这些头信息可以获取到客户端原始的IP地址。一种考虑了有代理存在的情况的获取客户端IP的方法:
private static final String[] HEADERS_TO_TRY = {
"X-Forwarded-For",
"Proxy-Client-IP",
"WL-Proxy-Client-IP",
"HTTP_X_FORWARDED_FOR",