Part 11. 3xx -영구적인 리다이렉션-1(HTTP 상태 코드)

김수환·2023년 3월 17일
0
post-thumbnail

주제
Q 1 : “요청을 완료하기 위해 유저 에이전트의 추가 조치가 필요한 리다이렉션?“
Q 2 : “리다이렉션의 종류, 영구적 리다이렉션(301과 308)?“(많이 사용되지 않음)


Q 1 : “요청을 완료하기 위해 유저 에이전트의 추가 조치가 필요한 리다이렉션?“


웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면 Location 위치로 자동 이동(리다이렉션)한다.
요청을 완료하기 위해 유저 에이전트의 추가 조치 필요한 경우

HTTP 상태코드설명
300Multiple Choices(거의 안씀)
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirect
308Permanent Redirect


<그림1>은 기존에 사용하던 /event를 동작하지 않고 새로운 /new-event로 처리할 경우 살펴보자. 사용자들이 기존 /event 페이지에 대해 북마크를 하거나 링크가 여러 군데로 공유가 될 수도 있는 상태다. 그런 사용자의 경우 /event 치고 들어오면 서버 입장에서 HTTP 응답 메시지 Status-Line(Start-Line)에 301 상태 코드를 적고 Moved-Permanently. HTTP 헤더에는 Location: /new-event로 보낸다.

서버의 응답 메시지를 받은 클라이언트(웹 브라우저)는 301 상태 코드와 Location: /new-event가 있다는 걸 확인하고 웹 브라우저 스스로 URL 경로를 /new-event로 바꿔 처리한다. 자동 리다이렉트 된 후 /new-event URL로 서버에게 다시 요청을 보낸다. 이를 확인 한 서버는 응답 메시지를 보낸다.

리다이렉션의 종류설명
영구적 리다이렉션특정 리소스의 URI가 영구적으로 이동
예) /members → /users
예) /event → /new-event
일시적 리다이렉션일시적인 변경
주문 완료 후 주문 내역 화면으로 이동할 때
PRG(Post/Redirect/Get)
특수 리다이렉션결과 대신 캐시를 사용할 때
클라이언트 입장에서 캐쉬가 있는데 캐쉬 기간이 만료될 때 서버에게 해당 캐쉬 정보를 넘겨 확인하는 경우

Q 2 : “리다이렉션의 종류, 영구적 리다이렉션?“



-> 영구적인 리다이렉션은 리소스의 URI가 영구적으로 이동할 때를 뜻한다. 원래의 URL를 사용하지 않고, 검색 엔진 등에서도 변경을 인지할 수 있다.

301 영구적인 이동 : 리다이렉트 시 요청 메서드를 POST로 요청을 해도 GET으로 변하고, 분몬이 제거될 수 있다.(MAY) <그림2>처럼 POST로 보내고 Message Body가 있음에도 POST → GET 요청으로 변하고 Message Body가 사라진 걸 확인할 수 있다.

308 영구적인 리다이렉션 : 301과 기능은 같다.리다이렉트시 요청 메서드와 본문이 유지된다.(처음 Post를 보내면 리다이렉트 요청할 때도 똑같이 POST로 보내고 Mesaage Body도 유지됨) 301 리다이렉션과 달리 POST 요청과 메시지의 존재이 유지되었음을 <그림4>처럼 확인할 수 있다.



참고 자료


김영한 인프런 강의 : 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의


profile
프리랜서 글쓰기 강사에서 백엔드 주니어 개발자로 👊🏻

0개의 댓글