리다이렉트 (Redirect)

Jan 31, 2024
리다이렉트 (Redirect)

[ 리다이렉트(Redirect) ]

리다이렉트란?

웹 페이지에서 "다른 페이지로 바로 가!"라고 명령을 내리는 것이라고 생각하자... 클라이언트가 특정 URL에 접근했을 때, 서버는 클라이언트에게 다른 URL로 이동하라는 상태 코드와 함께 응답. (302) 클라이언트는 이 상태 코드를 받으면 새로운 URL로 재요청을 보내고, 새로운 URL로 이동하게 된다. [ 리다이렉트는 주로 아래와 같은 경우에 사용된다 ] 1. 로그인 후에 사용자를 회원 전용 페이지로 이동시키는 경우 2. 웹 사이트의 URL이 변경되어 이전 URL을 새로운 URL로 자동으로 이동시키는 경우 3. 외부 사이트로 이동시키는 경우
notion image
메인 페이지를 그리지 않더라도(html 코드를 작성하지 않더라도) [ resp.sendRedirect("/main"); ] 이 코드를 사용하면 메인 페이지로 넘겨줄 것이다. (/join을 하면 /main으로 넘겨줄 것) 즉, http 요청이 2번 일어남 (회원가입하면 메인페이지로 넘어감)
💡
상태코드 200 = 정상 상태코드 300번대 (ex.302( = 리다이렉션 (니가 요청한게 아닌걸 돌려줄게)
 

리다이렉트 원리

리다이렉트는 주로 HTTP 응답(리스폰스) 헤더를 통해 이루어진다.
notion image
notion image
Status Code도 프로토콜이라 302 (300번대)가 적혀 있으면 "요청한 리소스가 다른 위치에 있으니 그곳으로 이동해!"라는 의미를 전달한다. 리다이렉션을 위해 HTTP Response Header에는 "Location"이라는게 필요하다. Location에는 클라이언트가 이동해야 할 새로운 URL이 포함되어있다. 예를 들어, "Location: /main"과 같이 설정하면 클라이언트는 "/main"이라는 URL로 이동하게 되는 것.
💡
* 리다이렉션을 하면 아까봤듯이 있는 동일한 코드를 재사용 할 수 있어서 좋다. * 리다이렉션=리다이렉트… 정도로만 알고 넘어가자. 개념은 비슷하다는 듯
💡
APP을 만들 때는 리다이렉션과 같은 기능을 직접 구현해야한다. Response Header에 상태 코드(Status Code)를 추가하려면 키값이 어떻게 돼? <내가 구현; (브라우저는 되어 있는데ㅠㅠ)
 

리다이렉트 코드

notion image

[ 1번 ]

resp.sendRedirect("/내가 이동하려는 uri");

[ 2번 ]

resp.setStatus(302); resp.setHeader("Location", "/내가 이동하려는 uri");
💡
1번을 쓰면 코드 1줄로 해결 2번을 쓰면 코드 2줄로 해결
 

 
Share article

codingb