在有代理服务器的情况下,需要通过X-FORWARDED-FOR http头来获得真实的用户ip:
1 public final class HTTPUtils { 2 3 private static final String HEADER_X_FORWARDED_FOR = 4 "X-FORWARDED-FOR"; 5 6 public static String remoteAddr(HttpServletRequest request) { 7 String remoteAddr = request.getRemoteAddr(); 8 String x; 9 if ((x = request.getHeader(HEADER_X_FORWARDED_FOR)) != null) { 10 remoteAddr = x; 11 int idx = remoteAddr.indexOf(','); 12 if (idx > -1) { 13 remoteAddr = remoteAddr.substring(0, idx); 14 } 15 } 16 return remoteAddr; 17 } 18 19 }
1 public final class HTTPUtils { 2 3 private static final String HEADER_X_FORWARDED_FOR = 4 "X-FORWARDED-FOR"; 5 6 public static String remoteAddr(HttpServletRequest request) { 7 String remoteAddr = request.getRemoteAddr(); 8 String x; 9 if ((x = request.getHeader(HEADER_X_FORWARDED_FOR)) != null) { 10 remoteAddr = x; 11 int idx = remoteAddr.indexOf(','); 12 if (idx > -1) { 13 remoteAddr = remoteAddr.substring(0, idx); 14 } 15 } 16 return remoteAddr; 17 } 18 19 }