본문 바로가기
Programming/Java_Spring

HttpRequestServlet에서 URL가져오기.

by 곰네Zip 2023. 3. 27.

HttpRequestServlet에서, URL을 확인하기 위해 필요한 경우가 있다.

//request : http://localhost:8080/myURI
private String myFunc(HttpServletRequest request){
   String fullURL = request.getRequestURL();  
   //fullURL : http://localhost:8080/myURI
   
   String myURI = request.getRequestURI();
   //myURI : /myURI
   
   //만약, forwarding된 경우라면.. (LB뒤에 연결되어있어 Https request-> Http request가 된 경우 등)
   GenericUrl url = new GenericUrl(request.getRequestURL().toString());
   if( request.getHeader("X-Forwarded-Proto") != null){
   	  url.setScheme(request.getHeader("X-Forwarded-Proto"));
   }
   url.setRawPath("/myURI");
   
   return url.build();   // http://localhost:8080/myURI
}

 위와 같이 getRequestURL을 통해 전체 URL을,

 getRequestURI를 통해 context및 servlet path를 가져온다.

나의 경우, 서버가 LB(Load Balancer)뒤에 붙어있는데. LB까지는 https로 요청이 전달되나, LB뒤에 붙은 서버는 LB와 http로 연결될 경우, URL이 달라진다. web browser는 https로 전달했는데, 서버가 받는 거는 http니까..

이럴 때, X-Forwarded-Proto를 확인하여 URL을 정정할 수 있음.

반응형

댓글