JSP 사용자 의 실제 IP 를 가 져 오 는 두 가지 실현 방법 에 대한 상세 한 설명

2110 단어 JSPIP 획득
JSP 사용자 의 실제 IP 를 가 져 오 는 두 가지 실현 방법 에 대한 상세 한 설명
JSP 에서 클 라 이언 트 의 IP 주 소 를 가 져 오 는 방법 은 request.getRemoteAddr()입 니 다.이런 방법 은 대부분 상황 에서 유효 합 니 다.그러나 아파 치,Nagix 등 역방향 프 록 시 를 통 해 클 라 이언 트 의 실제 IP 주 소 를 얻 을 수 없다.역방향 프 록 시 소프트웨어 를 사용 하면 request.getRemoteAddr()방법 으로 얻 은 IP 주 소 는 클 라 이언 트 의 실제 IP 가 아 닌 127.0.0.1 또는 192.168.1.110 입 니 다. 
      프 록 시 를 거 친 후에 클 라 이언 트 와 서비스 사이 에 중간 층 이 추가 되 었 기 때문에 서버 는 클 라 이언 트 의 IP 를 직접 받 을 수 없고 서버 측 응용 도 요청 한 주 소 를 클 라 이언 트 에 게 직접 전달 할 수 없습니다.그러나 리 트 윗 요청 한 HTTP 헤드 메시지 에 X-FORWARDED-FOR 메시지 가 추가 됐다.기 존의 클 라 이언 트 IP 주소 와 원래 클 라 이언 트 가 요청 한 서버 주 소 를 추적 합 니 다. 
      예 를 들 어 우리 가 입 소문 망 의 첫 페이지 인 hangzhou.jsp 를 방 문 했 을 때 사실은 우리 브 라 우 저가 서버 에 있 는 hangzhou.jsp 파일 을 진정 으로 방문 한 것 이 아니 라 프 록 시 Nagix 가 hagnzhou.jsp 를 방문 한 것 입 니 다.프 록 시 서버 가 방문 한 결 과 를 우리 브 라 우 저 에 게 되 돌려 주 는 것 입 니 다.프 록 시 서버 가 hangzhou.jsp 를 방문 한 것 이기 때 문 입 니 다.그래서 hangzhou.jsp 에서 request.getRemoteAddr()의 방법 으로 얻 은 IP 는 실제 프 록 시 서버 의 주소 이지 클 라 이언 트 의 IP 주소 가 아 닙 니 다.
클 라 이언 트 의 실제 IP 주 소 를 가 져 오 는 방법 1:

public String getRemortIP(HttpServletRequest request) { 
     if (request.getHeader("x-forwarded-for") == null) { 
        return request.getRemoteAddr(); 
     } 
     return request.getHeader("x-forwarded-for"); 
  } 
클 라 이언 트 의 실제 IP 주 소 를 얻 는 방법 2

public String getIpAddr(HttpServletRequest request) { 
     String ip = request.getHeader("x-forwarded-for"); 
     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
        ip = request.getHeader("Proxy-Client-IP"); 
     } 
     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
        ip = request.getHeader("WL-Proxy-Client-IP"); 
     } 
     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
        ip = request.getRemoteAddr(); 
     } 
     return ip; 
  } 

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기