Redirect vs Forward 차이점

한끄적
|2023. 10. 16. 20:56
728x90
반응형

웹 개발에서 리다이렉트와 포워드는 두 가지 다른 방식으로 클라이언트의 요청을 처리하고, 각각 다른 목적과 동작을 한다.

 

Redirect 방식

리다이렉트는 클라이언트의 요청을 다른 URL로 전환하는 메커니즘이다.

주로 다음과 같은 상황에서 사용된다.

  • 페이지 이동: 사용자를 다른 웹 페이지로 이동하도록 하려는 경우, 클라이언트의 브라우저에게 새로운 URL로 이동하라는 명령을 보내는 방식으로 작동.
  • URL 변경: 사용자가 잘못된 URL을 요청했을 때, 올바른 URL로 리다이렉트하여 사용자 경험을 향상함.
  • 외부 리소스 연결: 다른 도메인에 있는 외부 리소스에 연결하려는 경우, 클라이언트를 외부 도메인의 URL로 리다이렉트 할 수 있다.
  • 새로운 객체 생성: 다른 웹 컨테이너에 있는 주소로 이동하며 새로운 페이지에서는 Request와 Response 객체가 새롭게 생성된다.

리다이렉트는 서버에서 HTTP 상태 코드로 3xx 시리즈 코드를 사용하며,

주로 301 Moved Permanently와 302 Found (Temporary Redirect)가 사용된다.

301은 영구적인 이동을 의미하고, 302는 일시적인 이동을 의미한다.

 

Redirect

위 이미지를 보며 예시를 생각해 보자.  

① 클라이언트가 URL1으로  Request 요청을 보낸다.

② URL1에서는 클라이언트에게 Redirect 할 URL2를 반환해 준다.

③ 클라이언트는 새로운 요청을 생성해 URL2에 다시 Request를 보낸다.

④ 최종적으로 클라이언트는 URL2에서 요청에 대한 응답을 받게 된다.

결론적으로, Request 1이자 최초였던 객체는 Response 객체는 유효하지 않고 새롭게 생성되는 개념이다.

 

 

Forward 방식

포워드는 서버 내에서 요청을 다른 자원(페이지 또는 서블릿)으로 전달하는 메커니즘.

주로 다음과 같은 상황에서 사용된다.

  • 페이지 내부 이동: 현재 요청을 처리하던 페이지나 서블릿에서 다른 페이지로 제어를 넘길 때 사용. 이로써 하나의 요청에서 여러 페이지를 조합하여 응답을 생성할 수 있다.
  • 데이터 공유: 포워드를 사용하면 요청의 데이터(파라미터 등)를 전달한 페이지와 포워드 된 페이지 간에 공유 가능.
  • URL 변경 없음: 클라이언트의 브라우저는 URL이 변경되지 않으며, 사용자는 포워드를 의식하지 않는다.
  • 객체 공유: 현재 실행 중인 페이지와 Forward에 의해 호출된 페이지는 Request와 Response 객체를 공유한다.

 

Forward

위 이미지를 보며 예시를 생각해 보자. 

① 클라이언트가 URL1으로  Request 요청을 보낸다.

② URL1에서는 URL2로 요청 객체를 바로 전송한다.

③ 클라이언트는 URL1 요청에 의한 응답 객체를 전달받게 된다.

결론적으로, Forward는 클라이언트가 최초로 요청한 요청 정보가 다음 URL에서도 유효하다.

 

활용 예시 및 비교

게시판을 작성하는 과정을 예를 들 때, Foward를 사용하게 되면 글 작성 Response 페이지에서 새로고침을 하게 된다면 요청 객체가 그대로 살아 있으므로 여러 번 전달되어 동일한 게시물이 여러 번 등록될 수 있다.

반대로 Redirect를 사용하면 응답 페이지에서 새로고침을 눌러도, 초기 요청 정보가 존재하지 않으므로 게시물이 여러 번 등록되는 일이 발생하지 않는다.

 


728x90
반응형