1. 程式人生 > 其它 >JAVA 獲取客戶端請求IP

JAVA 獲取客戶端請求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; }