본문 바로가기
Computer Science/Network

HTTP 상태코드 3XX

by snfjddl 2021. 12. 19.

HTTP 상태 코드에는 2XX, 3XX, 4XX, 5XX 등 다양한 케이스가 있다.

그중에 3XX는 Redirection을 하는 상태 코드로 실무에서 자주 사용되는 것 같다.

 

Redirection은 아래와 같은 흐름으로 동작이 되는데, 아래 동작이 빠르게 수행되기 때문에 일반 유저들은

크게 신경 쓰지 않으면 모르고 넘어갈 수 있다.

 

출처: 김영한님 HTTP 강의자료

 

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

댓글