특정 URL 접속 시 리다이렉트 또는 포워드가 일어나게 되면 작업 중인 페이지가 전환됨
리다이렉트
는 페이지 전환 주체가 클라이언트이며, 페이지를 전환하는 방법은 접속한 URL이 아닌 다른 URL로 직접 접속히야함
포워드
는 서버가 전환 주체이며, URL 주소가 바뀌지 않고도 서버 내부의 동작을 통해 다른 응답을 클라이언트에게 내려줌
리다이렉트
는 서버에서 클라이언트가 요청한 URL에 대한 응답으로 다른 URL로 재접속 하라고 명령을 보내는 것
URL응 다시 가르키다 라는 뜻을 가지며, 클라이언트는 해당 URL로 다시 요청하게 됨
리다이렉트가 일어나면 URL 주소가 바뀌면서 다시 접속되는 것을 확인할 수 있어, 클라이언트 또한 리다이렉션이 일어났음을 알 수 있음
클라이언트는 보통 웹브라우저를 의미. 웹브라우저는 서버에서 Redirect의 응답코드
300번대
가 오면 리다이렉트 해야하는 URL로 다시 요청을 보냄
클라이언트가 한 번 더 요청을 보내도록 하는 리다이렉트와 다르게 포워드는 서버 내부에서 일어하는 호출
클라이언트의 URL에 대한 요청이 들어오면 해당 URL이 다른 URL로 포워딩 된 것이 확인되었을 경우 서버에서 포워딩 된 URL의 리소스를 확인하여 클라이언트에 응답
포워딩이 일어나면 클라이언트단 에서는 아무런 동작을 하지 않으며, 모든 동작은 서버에서 처리
클라이언트(웹브라우저)에서 요청한 URL은 물론 요청정보가 바뀌지않음
리다이렉트
는 클라이언트의 요청에 의해 서버의 DB에 변화가 생기는 작업에 사용(로그인, 회원가입, 글쓰기)
DB의 유저 테이블을 변경하는 회원가입과 같은 경우에는 리다이렉트
가 사용되어야 요청을 중복해서 보내는 것을 방지할 수 있음
포워드
는 특정 URL에 대해 외부이 공개되지 말아야 하는 부분을 가리는데 사용하거나 조회를 위해 사용
스프링의 경우 /WEB-INF에 있는 view에 대한 정보들이 외부에 직접 공개 되지 말아야 할 때 내부에서 포워딩을 통해 /WEB-INF경로를 가림
예를 들어 helloWorld/jihye 로 요청하면 helloWorld/WEB-INF/jihye로 응답하는 형식
사용자가 보낸 요청정보를 이용하는 글쓰기 기능응 수행하는 CGI(Commkn Gateway Interface)가 있다면, 이는 redirect를 사용해야함
사용자가 실수 혹은 고의로 글쓰기 CGI응답 페이지에서 새로고침을 누르게 되면 forward의 경우 요청 정보가 그대로 살아있기 때문에 똑같은 글이 여러번 등록됨
redirect의 경우 처음 글을 작성할 때 보냈던 요청은 존재하지 않으므로 글쓰기가 여러번 수행되지 않음
[출처]