본문 바로가기

Language/Java / JSP

[JSP]Client IP 가져오기

반응형

일반적으로 접속자의 IP를 사져오는 방법은 ruquest 객체의 getRemoteAddr을 이용하는 것이다.

하지만 간혹 서버 구성에 따라 getRemoteAddr 이용해도 사용자의 IP를 정상적으로 얻어오지 못할때가 있다.


이럴경우에는 다음과 같이 헤더에 있는 ip 정보를 읽어서 사용자의 IP 정보를 얻을 수 있다.


public static String getClientIp(HttpServletRequest req) {

	String[] header_IPs = { 
				"HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED" 
				, "HTTP_X_CLUSTER_CLIENT_IP", "HTTP_FORWARDED_FOR", "HTTP_FORWARDED"
				, "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP" 
			 } ;
	
	for (String header : header_IPs) {
		String ip = req.getHeader(header);
		
		if (ip != null && !"unknown".equalsIgnoreCase(ip) && ip.length() != 0) {
			return ip;
		}
	}
	
	return req.getRemoteAddr() ;
	
}