JAVA 获取客户端请求IP(internet IP)
private static final String UN_KNOWN = "unKnown"; private static String getIpAddress() { if (ObjectUtils.isEmpty(RequestContextHolder.getRequestAttributes())) { return null; } HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String xip = request.getHeader("X-Real-IP"); String xFor = request.getHeader("X-Forwarded-For"); if(!StringUtils.isEmpty(xFor) && !UN_KNOWN.equalsIgnoreCase(xFor)){ //多次反向代理后会有多个ip值,第一个ip才是真实ip int index = xFor.indexOf(","); if(index != -1){ return xFor.substring(0,index); }else{ return xFor; } } xFor = xip; if(!StringUtils.isEmpty(xFor) && !UN_KNOWN.equalsIgnoreCase(xFor)){ return xFor; } if (StringUtils.isEmpty(xFor) || UN_KNOWN.equalsIgnoreCase(xFor)) { xFor = request.getHeader("Proxy-Client-IP"); } if (StringUtils.isEmpty(xFor) || UN_KNOWN.equalsIgnoreCase(xFor)) { xFor = request.getHeader("WL-Proxy-Client-IP"); } if (StringUtils.isEmpty(xFor) || UN_KNOWN.equalsIgnoreCase(xFor)) { xFor = request.getHeader("HTTP_CLIENT_IP"); } if (StringUtils.isEmpty(xFor) || UN_KNOWN.equalsIgnoreCase(xFor)) { xFor = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (StringUtils.isEmpty(xFor) || UN_KNOWN.equalsIgnoreCase(xFor)) { xFor = request.getRemoteAddr(); } return xFor; }