HTTP 상태 코드에는 2XX, 3XX, 4XX, 5XX 등 다양한 케이스가 있다.
그중에 3XX는 Redirection을 하는 상태 코드로 실무에서 자주 사용되는 것 같다.
Redirection은 아래와 같은 흐름으로 동작이 되는데, 아래 동작이 빠르게 수행되기 때문에 일반 유저들은
크게 신경 쓰지 않으면 모르고 넘어갈 수 있다.
Redirection의 종류
- 영구 Redirection - 특정 리소스의 URI가 영구적으로 변경된 경우
ex) 위 그림이 영구 Redirection의 예시임 - 일시 Redirection - 일시적인 변경
ex) 회원가입 후 메인페이지로 이동 등
자주 사용되는 패턴 PRG: Post/Redirect/Get - 특수 Redirection - 결과 대신 캐시를 사용
영구 Redirection
원래의 URL은 더이상 사용 X, 검색 엔진 등에서도 변경된 URL 반영
301 Moved Permanently
- Redirect시 HTTP Request method가 GET으로 변하고, body가 제거될 수 있음(MAY)
최초 301 스펙의 의도와 다르게 동작하여 생성한 308 상태 코드
308 Permanent Redirect
- Redirect시 HTTP Request의 method와 body 유지
일시 Redirection
일시적으로 URI를 변경하므로 검색 엔진 등에서는 기존 URL 유지
302 Found
- Redirect시 HTTP Request method가 Get으로 변하고, body가 제거될 수 있음(MAY)
최초 302 스펙의 의도와 다르게 동작하여 생성한 303, 307 상태 코드
307 Temporary Redirect
- Redirect시 HTTP Request의 method와 body 유지(MUST NOT)
303 See Other
- Redirect시 HTTP Request의 method를 GET으로 변경
PRG: Post / Redirect / Get
상품을 주문할 때 200 OK를 받고 새로고침을 하면 상품 주문 요청이 재전송되어 중복 주문 등 문제가 발생할 수 있다.
따라서 HTTP Response로 302나 303을 사용하면 실수로 인한 중복 주문을 방지할 수 있음.
특수 Redirection
304 Not Modified
- 클라이언트에 리소스가 수정되지 않았음을 알려준다.
=> 클라이언트의 로컬 캐시를 재사용하도록 유도 (캐시로 Redirect)
- HTTP Response에 body를 포함하지 않음
'Computer Science > Network' 카테고리의 다른 글
HTTP 메소드 (0) | 2021.11.17 |
---|---|
HTTP(HyperText Transfer Protocol) (0) | 2021.11.15 |
URI(Uniform Resource Identifier) (0) | 2021.10.03 |
TCP와 UDP (0) | 2021.10.03 |
IP(Internet Protocol) (0) | 2021.09.26 |
댓글