Java IP 주소 가 져 오기:request.getRemoteAddr()
프 록 시 를 거 친 후에 클 라 이언 트 와 서비스 사이 에 중간 층 이 추가 되 었 기 때문에 서버 는 클 라 이언 트 의 IP 를 직접 받 을 수 없고 서버 측 응용 도 요청 한 주 소 를 클 라 이언 트 에 게 직접 전달 할 수 없습니다.그러나 전송 요청 한 HTTP 헤더 정보 에 X-FORWARDED-FOR 정보 가 추가 되 었 습 니 다.기 존의 클 라 이언 트 IP 주소 와 원래 클 라 이언 트 가 요청 한 서버 주 소 를 추적 합 니 다.우리 가 방문 할 때http://www.xxx.com/index.jsp/ 우리 브 라 우 저가 서버 에 있 는 index.jsp 파일 에 진정 으로 접근 한 것 이 아니 라 프 록 시 서버 에서 먼저 접근 한 것 입 니 다.http://192.168.1.110:2046/index.jsp 프 록 시 서버 는 방문 한 결 과 를 브 라 우 저 에 게 되 돌려 줍 니 다.프 록 시 서버 가 index.jsp 를 방문 하 는 것 이기 때 문 입 니 다.그래서 index.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”);
}
근 데 내 가 방문 하면http://www.xxx.com/index.jsp/ 때,돌아 오 는 IP 주 소 는 시종 알 수 없 으 며,위 에서 보 여 준 127.0.0.1 또는 192.168.1.110 이 아니 라,내 가 방문 한 것 이다.http://192.168.1.110:2046/index.jsp 클 라 이언 트 의 실제 IP 주 소 를 되 돌려 주 고 검증 하 는 방법 을 썼 습 니 다.원인 은 Squid 에서 나 왔 다.squid.conf 의 배합 파일 forwardfor 항목 의 기본 값 은 on 입 니 다.forwardfor 는 off 로 설정 되 었 습 니 다.X-Forward-for:unknown 은 클 라 이언 트 의 실제 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;
}
그러나 다단 계 역방향 대 리 를 통과 하면 X-Forward-For 의 값 은 하나 가 아니 라 IP 값 입 니 다.도대체 어느 것 이 진정한 사용자 측의 실제 IP 입 니까?정 답 은 X-Forward-For 에서 최초 로 알 수 없 는 유효한 IP 문자열 을 가 져 오 는 것 입 니 다.예 를 들 어 X-Forward-For:192.168.1.110,192.168.1.120,192.168.1.130,192.168.1.100 사용자 의 실제 IP 는 192.168.1.10 으로 설명 한다.이런 방법 에 따라 100%정확 한 것 이 아니 라 인터넷 에서 많은 사람들 이 정확 하려 면 반드시 애플 트 와 같은 클 라 이언 트 공간 을 만들어 야 한다 고 말한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.