Client IP 조회
서버에 접속하는 클라이언트의 아이피를 확인하기 위해서는
HttpServletRequest 객체를 이용하면 된다고 한다.
request.getRemoteAddr();
하지만 Load Balancer나 프록시 같은 경우는 정확한 아이피 정보를
가져오지 못 한다고 한다.
그래서 다음과 같은 메소드를 이용한다.
localhost에서 테스트 할 경우 0:0:0:0:0:0:0:1 값으로 넘어 오는 경우가 있는데
이 값은 IPv6에서 IPv4의 127.0.0.1와 같은 값이다.
127.0.0.1로 받아오려면 톰캣 vm arguments에 아래와 같이 추가하여 준다.
vm arguments
-Djava.net.preferIPv4Stack=true
java
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;
}
2.
import java.net.*;
만약 공인 IP없으면 내부 IP 가져오도록 처리
public static String getCurrentEnvironmentNetworkIp(){
[출처] [자바] IP정보 가져오기|작성자 좋은생각
'Programming > java' 카테고리의 다른 글
[java] Client의 웹브라우저 종류 조회 (0) | 2015.04.24 |
---|---|
[java] Client의 웹브라우저 버전 조회 (0) | 2015.04.24 |
[java] 임시 비밀번호 만들기 (0) | 2015.04.03 |
[java] 영문/한글 길이 구하기 (0) | 2015.03.26 |
[java] java JSON 데이터 파싱 (0) | 2015.01.20 |