반응형
환경) 백엔드와 프론트엔드가 분리되어있음
첫번째방법
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>
반응형