> Java > java지도 시간 > 본문

요청을 기반으로 클라이언트 IP를 얻는 Java의 방법에 대한 자세한 설명

零下一度
풀어 주다: 2017-05-27 09:27:45
원래의
1891명이 탐색했습니다.

이 글에서는 주로 요청에 따라 클라이언트 IP를 얻는 방법을 소개합니다. 매우 훌륭하고 참고할만한 가치가 있습니다. 필요한 친구는

JSP에서 클라이언트 IP 주소를 얻는 방법을 참조하세요. 예: request.getRemoteAddr(), 이 메소드는 대부분의 경우에 유효합니다. 그러나 Apache, Squid와 같은 역방향 프록시 소프트웨어를 통해서는 클라이언트의 실제 IP 주소를 얻을 수 없습니다.

역방향 프록시 소프트웨어를 사용하고 http://192.168.1.110:2046/의 URL을 www.xxx.com/의 URL로 역방향 프록시하는 경우 request.getRemoteAddr() 메소드를 사용하여 이를 얻으세요. IP 주소는 127.0.0.1 또는 192.168.1.110이며 클라이언트의 실제 IP가 아닙니다.

프록시 이후에는 클라이언트와 서비스 사이에 중간 계층이 추가되어 서버가 클라이언트의 IP를 직접 얻을 수 없으며, 서버 측 애플리케이션이 클라이언트에 주소를 직접 전달하여 클라이언트에 반환할 수 없습니다. 요구. 하지만 전달된 요청의 HTTP 헤더 정보에는 X-FORWARDED-FOR 정보가 추가됩니다. 원래 클라이언트 IP 주소와 원래 클라이언트가 요청한 서버 주소를 추적하는 데 사용됩니다. http://www.xxx.com/index.jsp/를 방문하면 실제로 서버의 index.jsp 파일에 액세스하는 브라우저가 아닙니다. 대신 프록시 서버가 먼저 http://192.168에 액세스합니다. :2046/index.jsp, 프록시 서버는 index.jsp에 액세스한 프록시 서버이므로 index.jsp의 request.getRemoteAddr() 메소드를 통해 얻은 IP가 실제로는 주소입니다. 클라이언트의 IP 주소가 아닌 프록시 서버의 IP 주소입니다.

따라서 클라이언트의 실제 IP 주소를 얻는 첫 번째 방법을 얻을 수 있습니다.

public String getRemortIP(HttpServletRequest request) {
 if (request.getHeader("x-forwarded-for") == null) {
 return request.getRemoteAddr();
 }
 return request.getHeader("x-forwarded-for");
}
로그인 후 복사

그러나 www.xxx.com/index를 방문하면 .jsp/ 이때 반환된 IP 주소는 항상 알 수 없으며, 위에 표시된 대로 127.0.0.1 또는 192.168.1.110이 아닙니다. http://192.168.1.110:2046/index.jsp에 접속하면 실제 IP 주소입니다. 클라이언트의 IP 주소가 반환될 수 있으므로 이를 확인하는 방법을 작성했습니다. 그 이유는 오징어에 있습니다. squid.conf 구성 파일의 전달된_for 항목은 기본적으로 켜져 있습니다. 전달된_for가 꺼짐으로 설정된 경우: 방법 2:

public String getRemoteHost(javax.servlet.http.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.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
}
로그인 후 복사

[관련 권장 사항] 1.

Request 객체의 작은 사례 공유

2. Java valueOf와 toString의 차이점(String)

3. ASP의 요청 개체에서 클라이언트 데이터를 얻는 다섯 가지 방법

4.

ASP.NET 시스템 개체 요청에 대한 자세한 설명

위 내용은 요청을 기반으로 클라이언트 IP를 얻는 Java의 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!