문제

안녕하세요 IAM은 지식 기반에서 제안 된 것처럼 모든 트래픽을 https로 리디렉션합니다. https://openshift.redhat.com/community/kb/kb-e1044-how-to-redirect-traffic-to-htps

그러나이 IAM을 수행 한 후 사용자 IP 주소를 가져올 수 없으며 리디렉션되는 서버의 IP 주소를 가져 오는 경우 :

아래는 Java Spring MVC 특정 구현의 예입니다.CURRENTVIEWEDIP는 사용자 IP가 아닌 HTTPS로 리디렉션 된 서버가됩니다.

 @RequestMapping(value = "/payment/", method = RequestMethod.GET)
  public String newBracqet(Model model, HttpServletRequest request) {
    String currentViewedIP = request.getRemoteAddr();
 }
.

도움이 되었습니까?

해결책

사용자가 프록시 서버 뒤에 있거나로드 밸런서 (예 : 클라우드 호스팅)를 통해 웹 서버에 액세스하면 위의 코드는 프록시 서버 또는로드 밸런서 서버의 IP 주소가 원래 IP 주소가 아닙니다.클라이언트의.

해결을 위해 요청의 HTTP 헤더의 IP 주소를 얻어야합니다. "x-forward-for (xff)".

  //is client behind something?
  String ipAddress = request.getHeader("X-FORWARDED-FOR");  
  if (ipAddress == null) {  
     ipAddress = request.getRemoteAddr();  
  }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top