Web

[Web] Forwarding & Redirect

다애루 2021. 7. 13. 15:33

 

 

Forwarding와 Redirect는

웹 개발에서 한 페이지에서 다른 URL 로 이동하고자 할 때 사용된다는 공통점이 있다.

하지만 그 사용법이 조금 다르므로 자세히 알아보고자 한다.

 


 

  • 포워딩 (Forwarding) 
    웹 컨테이너(Web Container) 차원에서 페이지 이동을 의미한다.
    동일 웹 컨테이너에서 관리하는 페이지로만 이동이 가능하다.
    웹 브라우저의 URL 정보는 변경되지 않으므로 클라이언트는 다른 페이지로 이동했는지 확인이 불가능하다.
    포워딩은 클라이언트와 통신이 서버에서만 처리되며 리다이렉트보다 나은 성능을 보여준다.
    현재 페이지와 포워딩에 의해 호출된 페이지는 Request & Response 객체를 공유한다.

  

  • 리다이렉트 (Redirect) 
    웹 브라우저에게 다른 페이지로 이동하라고 명령한다.
    해당 명령에 브라우저가 웹 컨테이너의 응답을 받은 후 다시 요청을 보내는 경우 새로운 URL을 포함한다.
    다른 웹 컨테이너의 페이지로 이동이 가능하다.
    웹 컨테이너에서는 Request와 Response 객체가 새롭게 생성된다.
    추가적으로 발생하는 처리에 의해 포워딩보다는 느리다.

redirect의 경우 최초 요청을 받은 URL1 에서 클라이언트에 redirect할 URL2을 리턴하고,

클라이언트에서는 전혀 새로운 요청을 생성하여  URL2에 다시 요청을 보낸다.

처음 보냈던 최초의 요청정보는 더 이상 유효하지 않다.

 

실제 웹 애플리케이션을 작성할 때 두 가지 방식 중 하나를 적절히 선택하여 사용해야 한다.

예를 들어, 게시판 애플리케이션을 작성한다고 하자.

사용자가 보낸 요청 정보를 이용하여 글쓰기 기능을 수행하는 CGI가 있다면,

이 CGI의 응답 페이지는 forward와 redirection 중 어느 것을 사용해야 할까?

정답은 redirection이다.

 

사용자가 실수 혹은 고의로 글쓰기 CGI의 응답 페이지에서 '새로고침'을 누르면

forward의 경우 요청정보가 그대로 살아있기 때문에 똑같은 글이 여러번 등록될 수 있다.

하지만 redirection의 경우 처음 글을 작성할 때 보냈던 요청 정보는 존재하지 않는다.

또한 글쓰기 기능을 하는 URL1이 아닌 URL2로 요청을 보내기 때문에 글쓰기가 여러번 수행되지 않는다.

 

시스템(세션, DB, ...)에 변화가 생기는 요청(로그인, 회원가입, 글쓰기 등)의 경우

redirection 방식으로 응답하는 것이 바람직 하며,

시스템에 변화가 생기지 않는 단순 조회 요청(글 목록 보기, 검색 등)의 경우

forward 방식으로 응답하는 것이 바람직하다.

 



참고 자료 : https://bigstory.tistory.com/entry/Forward-vs-Redirection 

 

 

프로그래밍 공부를 위해 여러 자료들을 토대로 작성한 기록입니다.

개인 공부에만 사용해주시고, 상업적인 활용과 재배포를 금지합니다.

 

'Web' 카테고리의 다른 글

Protocol / FTP / SFTP 의 의미  (0) 2021.07.26
[Web] XML 이란?  (0) 2021.07.16
[Web] DBCP  (0) 2021.07.15
[Web] GET 방식과 POST 방식  (0) 2021.07.08
웹퍼블리셔에게 필요한 기술 : HTML, CSS, JavaScript, JQuery  (0) 2021.04.18