3xx (Redirection)
요청을 완료하기 위해 유저 에이전트의 추가 조치 필요
여기서 Redirction 은 간단하게, 3xx 응답의 결과에 Location 헤더가 존재하면, Location 위치로 자동 이동하는 방식을 의미한다.(리다이렉트)
1. 예를 들어 기존에 /event 페이지를 통해 진행한 이벤트 이력이 있는데, 사용자들이 북마크를 해두고 이벤트가 끝난 시기에 GET /event URI 로 접속 시도
2. 서버는 301 코드와 함께 Location 으로 새롭게 운영중인 이벤트 사이트의 URI 제공
3. 클라이언트는 301 코드를 확인하고 획득한 Location 정보를 가지고 해당 URI 에 대한 GET 메서드 새로 생성후 전송
4. 새 이벤트 페이지 에서 200 코드로 접속 OK
Redirection 종류
1. 영구 리다이렉션 : 특정 리소스의 URI 가 영구적으로 이동 (Moved Permanently)
2. 일시 리다이렉션 : 일시적인 변경 (주문 완료 후 주문 내역으로 이동, PRG 패턴)
3. 특수 리다이렉션 : 결과 대신 캐시 사용
영구 리다이렉션
301 (Moved Permanently), 308 (Permanent Redirect) -> 둘다 경로가 바뀜을 알려준다
- 리소스의 URI가 영구적으로 이동
- 원래 URL는 사용 x -> 검색 엔진 등에서도 변경 인지
301 Moved Permanently
리다이렉트시 요청 메서드가 GET으로 변환, 본문 제거 가능
아래 같은 상황은 새로운 웹으로 연결 되고 사용자가 처음부터 폼을 다시 작성해야함
308 Permanent Redirect
301과 기능은 유사 -> 리다이렉트시 요청 메서드와 본문 유지
이번에는 메서드와 바디를 그대로 유지하여 새로운 웹에서 바로 등록 완료 가능
308은 다만 스펙일뿐, 내부적 데이터 변경 위험성 때문에 301을 쓰자 !
일시적 리다이렉션
리소스의 URI가 일시적으로 변경 -> 검색 엔진 등에서 URL을 변경하면 안된다
302 Found
리다이렉트시 요청 메서드가 GET으로 변하고, 본문 제거 가능
307 Temporary Redirect
302 와 기능은 같으나, 리다이렉트시 요청 메서드와 본문 유지 (요청 메서드 변경 X)
303 See Other
302와 기능은 같으나, 요청 메서드가 GET으로 변경
PRG(Post/Redirect/Get) 패턴 - 일시적 리다이렉션이 반드시 필요한 케이스
post로 주문후 웹 브라우저 새로고침히 중복 주문이 발생될 수 있다.
해결 방법
POST 로 주문 후에 주문 결과 화면을 GET 메서드로 리다이렉트 -> 새로 고침시 가장 마지막 메서드였던 GET 메서드가 재 실행 -> 중복 주문 대신 주문 결과 화면이 GET으로 요청 됨 -> GET 메서드는 원본 데이터에 영향 X
기타 리다이렉션
300 (Multiple Choices) : 안쓴다
304 (Not Modified) : 진짜 많이 쓴다 -> 캐시를 목적으로 사용 -> 클라이언트에게 리소스가 수정 되지 않았음을 알려준다
즉, 서버에서 요청 데이터가 변경되지 않았으면, 클라리언트에게 캐시에 있는 데이터를 그대로 쓰라고 하는 상태이다. -> 캐시로 리다이렉트 + 캐시를 사용해야하므로 응답 메시지 바디 X
'HTTP' 카테고리의 다른 글
[HTTP] URL, URI , URN 이 대체 뭔데? (0) | 2025.06.14 |
---|---|
[HTTP] Cookie - 쿠키 (0) | 2025.05.29 |
[HTTP] 4xx - Client Error / 5xx - Server Error (0) | 2025.05.22 |
[HTTP] HTTP 상태코드, 1xx, 2xx 상태코드 (0) | 2025.05.22 |
[HTTP] 리소스 URI 네이밍 규칙과 베스트 프랙티스 (0) | 2025.05.21 |