반응형

환경) 백엔드와 프론트엔드가 분리되어있음

 

첫번째방법

PrintWriter 를 사용하여 script를 뿌려준다. javascript 소스를 텍스트로 넣으면 된다.

location.href='리다이렉트 시킬 주소'

@RequestMapping(value = "/redirect1")
    public void redirect1(HttpServletRequest request, HttpServletResponse response,
            @RequestParam Map<String, Object> paramMap,Model model) throws Exception {
        PrintWriter out = new PrintWriter(response.getWriter());
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<meta charset=\"UTF-8\" />");
        out.println("<title>TITLE입니다.</title>");
        out.println("<head>");
        out.println("</head>");
        out.println("<body>");
        out.println("<script type='text/javascript'>");
        out.println("alert('경고~~');");
        out.println("location.href='https://www.google.com';");
        out.println("</script>");
        out.println("</body>");
        out.println("</html>");
        return null;
    }

 

 

두번째방법

HTTP 응답 상태 코드 301 Moved Permanently를 사용한다.

ResponseEntity를 리턴해주는 경우 상태코드를 Moved Permanently로 설정하고 

헤더에 리다이렉트시킬 url을 적어준다. 

@RequestMapping(value = "/redirect2")
    public ResponseEntity redirect2(@RequestBody Map<String, Object> paramMap)
            throws Exception {
        return ResponseEntity
                .status(HttpStatus.MOVED_PERMANENTLY)
                .contentType(MediaType.APPLICATION_JSON)
                .header("location", "http://localhost:8081/redirect2")
                .body("message");
    
}

 

세번째방법

서버페이지를 리턴해주고 서버페이지의 script에서 location.href에 리다이렉트 시킬 url을 적어준다.

@RequestMapping(value = "/redirect1")
    public void redirect1(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return "serverPage/index";
    }
<script type="text/javascript">
    parent.parent.location.href="[[${clientUrl}]]";
</script>
반응형

+ Recent posts