How to extract IP Address in Spring MVC Controller get call?

后端 未结 9 542
长发绾君心
长发绾君心 2020-11-28 04:04

I am working on Spring MVC controller project in which I am making a GET URL call from the browser -

Below is the url by which I am making a GET call from the browse

9条回答
  •  温柔的废话
    2020-11-28 04:45

    I use such method to do this

    public class HttpReqRespUtils {
    
        private static final String[] IP_HEADER_CANDIDATES = {
            "X-Forwarded-For",
            "Proxy-Client-IP",
            "WL-Proxy-Client-IP",
            "HTTP_X_FORWARDED_FOR",
            "HTTP_X_FORWARDED",
            "HTTP_X_CLUSTER_CLIENT_IP",
            "HTTP_CLIENT_IP",
            "HTTP_FORWARDED_FOR",
            "HTTP_FORWARDED",
            "HTTP_VIA",
            "REMOTE_ADDR"
        };
    
        public static String getClientIpAddressIfServletRequestExist() {
    
            if (RequestContextHolder.getRequestAttributes() == null) {
                return "0.0.0.0";
            }
    
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            for (String header: IP_HEADER_CANDIDATES) {
                String ipList = request.getHeader(header);
                if (ipList != null && ipList.length() != 0 && !"unknown".equalsIgnoreCase(ipList)) {
                    String ip = ipList.split(",")[0];
                    return ip;
                }
            }
    
            return request.getRemoteAddr();
        }
    }
    

提交回复
热议问题