개발/Java&Kotlin

[Spring] Redirect, Forward 차이

devhooney 2023. 9. 18. 22:16
728x90

Redirect와 Forward의 차이에 대해서 알아보자

 

1. Redirect(리다이렉트):

리다이렉트는 클라이언트(브라우저)에게 요청을 다른 URL로 보내도록 지시하는 HTTP 상태 코드와 함께 사용된다.(예: 301 Moved Permanently, 302 Found, 303 See Other 등) 리다이렉트가 발생하면 클라이언트는 새로운 URL로 이동하며, 이때 새로운 URL로의 요청이 새로 생성된다. 클라이언트는 이전 URL에서 새로운 URL로 요청을 재전송한다.

 

따라서 클라이언트에게는 두 번의 요청이 보이게 된다. 주로 이전 URL이 영구적으로 이동한 경우나 새로운 URL로 재요청을 원하는 경우에 사용된다.

 

좀 더 자세한 설명을 해보면, 리다이렉트는 클라이언트(웹 브라우저)에게 현재의 URL에서 다른 URL로 이동하도록 지시하는 방법이다. 리다이렉트는 주로 HTTP 상태 코드를 사용하여 수행된다.

 

클라이언트 요청:
클라이언트가 웹 페이지를 요청.
서버는 해당 요청을 처리하고, 이 요청을 리다이렉션해야 할 경우 새로운 URL로 이동하라고 응답.

 

서버 리다이렉션 응답:
서버는 클라이언트에게 리다이렉션 상태 코드(예: 301 Moved Permanently, 302 Found, 303 See Other)와 함께 새로운 목적지 URL을 전송.
클라이언트는 이 응답을 받으면, 새로운 URL로 이동하라는 지시를 받고, 해당 URL로 재요청을 전송.

 

클라이언트 새로운 요청:
클라이언트는 새로운 URL로 요청.
서버는 이 새로운 URL에 해당하는 페이지를 반환.
리다이렉트는 다양한 상황에서 사용된다. 예를 들어, 웹 페이지 이동, 도메인 변경, 영구적인 URL 변경 등에 사용된다.

 

 

 

2. Forward(포워드):

포워드는 웹 애플리케이션 내에서 페이지 또는 리소스의 내부 이동을 의미한다. 서버 측에서 요청을 받고, 서버 내부에서 다른 페이지 또는 리소스로 요청을 전달하면서 클라이언트에게는 전환되지 않은 URL이 그대로 보인다. 클라이언트는 하나의 요청만 보내고, 서버에서 내부적으로 다른 페이지로 이동한다. 클라이언트는 이러한 내부 이동을 인식하지 못한다. 주로 웹 애플리케이션 내에서 다른 페이지로 이동하거나 페이지 간 데이터 공유를 위해 사용된다.

 

간단히 말하면, 리다이렉트는 클라이언트에게 새로운 URL로 이동하라고 지시하고 클라이언트가 새로운 요청을 보내는 반면, 포워드는 서버 내에서 페이지 이동을 처리하고 클라이언트는 하나의 요청만 보내며 이동을 인식하지 못한다.

 

좀 더 자세한 설명을 해보면, 포워드는 서버 내부에서 페이지 이동을 처리하는 방법. 클라이언트에게는 이동이 발생하지 않으며, 클라이언트는 하나의 요청만 보내고 응답을 받음.

클라이언트 요청:
클라이언트가 웹 페이지를 요청.

 

서버 내부 포워드:
서버는 클라이언트의 요청을 받고, 내부적으로 다른 페이지로 이동. 이 과정은 클라이언트에게는 투명하게 이루어짐.
서버는 클라이언트에게 새로운 페이지의 내용을 반환. 포워드는 주로 웹 애플리케이션 내에서 다른 페이지로 이동하거나 페이지 간 데이터 공유를 위해 사용. 클라이언트에게는 이동이 없으며, 서버에서 내부적으로 처리.

 

 


요약하면, 리다이렉트는 클라이언트에게 새로운 URL로 이동하라고 지시하고 클라이언트가 새로운 요청을 보내는 반면, 포워드는 서버 내에서 페이지 이동을 처리하고 클라이언트는 하나의 요청만 보내며 이동을 인식하지 못한다.

728x90