1. Redirect
HTTP에서 redirect란 re(다시) + direct(지시하다)라는 뜻이다.
www.test.com/page1 URL을 웹서버에 요청해서 서버는 HTTP 응답 메시지를 통해 www.test.com/page2로 로 다시 요청하라고 브라우저에게 다른 URL을 지시할 수 있다.

HTTP redirect는 HTTP 표준으로 정의되어 있는데 최초 요정을 받는 웹서버는 HTTP 응답 상태 코드로 302를 보내고 응답 메시지 헤더 중 Location 값으로 리다이렉트 되어야 할 주소를 설정해 리턴한다.
브라우저 등의 웹 클라이언트는 HTTP 응답 메시지의 상태 코드가 302라는 것을 보고 리다이렉트라는 것을 인지하여 Location에 설정되어 있는 URL로 다시 재요청한다.
2. Redirect가 필요한 이유
예를 들어 네이버 카페를 들면
카페마다 다르지만 특정 네이버 카페는 네이버 회원이더라도 해당 카페에 가입되어 있거나 카페에 가입되어 있다고 하더라도 특정 등급이 되어야 열람할 수 있는 글들이 있을 수 있다.
만약 해당 글의 URL을 알아내어 브라우저의 주소 창에 입력한 후 접근한다고 했을때 권한이 없다면 글에 대한 내용을 웹서버가 응답하면 안 되니 글에 접근하는 요청마다 권한을 검사하고 권한이 되지 않는 경우 권한을 확인하라고 경고 문구가 뜨는 페이지나 네이버 계정이 로그인되어 있지 않다면 로그인 페이지로 redirect 시킬 필요가 있을 때 유용할 것이다.
3. Redirect의 흐름
- 클라이언트에서 서버로 첫번째 URL로 요청한다.
- 서버에서 첫번째 URL로 받고 두 번째 URL로 redirect 처리한다.
- Location 응답 헤더에 HTTP status Code 302와 두 번째 URL을 담아서 클라이언트에 전송한다.
- 클라이언트에서 Location 응답 헤더에 있는 302 응답코드를 확인하고 두 번째 URL로 재요청한다.
( 클라이언트는 응답결과로 받은 요청 주소를 직접 요청 )
( 브라우저가 요청하는 것이므로 주소창의 URL 주소는 변경 )
( 새로운 요청이기 때문에 Request 와 Response는 새롭게 생성, HttpSession 객체는 유지 ) - 서버에서 요청 받는 두 번째 URL을 응답한다.
필터, 인터셉터에서 체크된다.