관리 메뉴

드럼치는 프로그래머

[Spring] 접속된 클라이언트의 아이피 확인하는 방법 본문

★─Programing/☆─WebProgram

[Spring] 접속된 클라이언트의 아이피 확인하는 방법

드럼치는한동이 2016. 5. 30. 01:39

접속하는 클라이언트의 아이피를 확인 하려면 HttpServletRequest 객체에서 가져와서 확인하면 된다. 

request.getRemoteAddr() ;


그러나 프록시나 Load Balancer 같은것을 겨쳐 오게 되는 경우 위의 방법으로는 정확한 아이피를 가져 오지 못하게 된다. 


그래서 다음과 같이 메소드를 구현해서 사용 하는 것이 편리하다. 



public String getClientIP(HttpServletRequest request) {


    String ip = request.getHeader("X-FORWARDED-FOR"); 

   

    if (ip == null || ip.length() == 0) {
        ip = request.getHeader("Proxy-Client-IP");
    }


    if (ip == null || ip.length() == 0) {
        ip = request.getHeader("WL-Proxy-Client-IP");  // 웹로직
    }


    if (ip == null || ip.length() == 0) {
        ip = request.getRemoteAddr() ;
    }

   

    return ip;

}



** localhost에서 테스트 하는 경우 0:0:0:0:0:0:0:1 값으로 넘어 오는 경우가 있다.

이 값은 IPv6 에서 IPv4의 127.0.0.1 과 같은 값이다.
Tomcat으로  개발시 이게 문제가 되는 경우 vm arguments에  -Djava.net.preferIPv4Stack=true 값을 넣어 주면 된다.

[출처] http://apieceofspace.blogspot.kr/2014/01/jsp.html

Comments