1 minute read

요약

공통점
💡 리다이렉트와 포워드는 페이지가 전환된다는 점은 비슷해보인다.

리다이렉트와 포워드
💡 리다이렉트는 페이지 전환 주체가 클라이언트이며, 포워드는 페이지 전환 주체가 서버이다.

리다이렉트

리다이렉트(Redirect)는 서버에서 클라이언트에서 URL요청시 응답에서 다른 URL로 재접속 하라고 명령을 보내는 것을 말한다.

Re-Direct는 ‘URL을 다시 가리킨다’ 라는 뜻을 가지며, 클라이언트는 해당 URL로 다시 요청하게 된다. 리다이렉트가 일어나면 URL 주소가 바뀌면서 다시 접속되는 것을 확인할 수 있어, 클라이언트 또한 리다이렉션이 일어났음을 알 수 있다.

여기서 말하는 클라이언트는 보통 웹브라우저를 뜻한다. 웹브라우저는 서버에서 Redirect를 하라는 응답코드인 300번대 코드가 오게 되면, 리다이렉트를 해야되는 URL로 다시 요청을 보내는 역할을 한다.

포워드

클라이언트가 한 번 더 요청을 보내도록 하는 리다이렉트와 다르게 포워드는 서버 내부에서 일어나는 호출이다.

클라이언트의 URL에 대한 요청이 들어오면 해당 URL이 다른 URL로 포워딩 된 것이 확인되었을 경우 서버에서 포워딩된 URL의 리소스를 확인하여 클라이언트에 응답한다.

포워딩이 일어나면 클라이언트 단에서는 아무런 동작을 하지 않으며, 모든 동작을 서버에서 처리한다. 따라서 클라이언트(웹브라우저)에서 요청한 URL은 물론 요청정보는 바뀌지 않는다.

예를 들어 naver.com/95를 서버에 요청했는데, 서버에서 해당 글의 리소스가 naver.com/WEB-INF/95에 있음을 확인한 경우, naver.com/WEB-INF/95를 리소스를 확인하여 클라이언트에 응답하게 된다.

이 과정에서 클라이언트가 요청한 naver.com/95는 바뀌지 않고 요청 정보가 그대로 유지된다, 클라이언트 또한 포워딩이 일어났는지 조차 알지 못한다.

즉, 포워드는 내부 동작이다.

각 사용하는 용도

리다이렉트

리다이렉트는 클라이언트의 요청에 의해 서버의 DB에 변화가 생기는 작업에 사용된다.

예를 들어 DB의 유저 테이블을 변경하는 회원가입과 같은 경우에는 리다이렉트가 사용되어야 요청을 중복해서 보내는 것을 방지할 수 있다.

포워드

포워드는 특정 URL에 대해 외부에 공개되지 말아야 하는 부분을 가리는데 사용하거나 조회를 위해 사용된다.

스프링의 경우 /WEB-INF에 있는 view에 대한 정보들이 외부에 직접 공개되지 말아야 할 때 내부에서 포워딩을 통해 /WEB-INF 경로를 가리키도록 한다. 예를 들어 kotlinworld.com/95 로 요청을 하면 kotlinworld.com/WEB-INF/95를 응답하는 형식이다.

출처: https://kotlinworld.com/329

Leave a comment