twocowsong

[모든 개발자를 위한 HTTP 웹 기본 지식 - 20] 본문

IT/HTTP

[모든 개발자를 위한 HTTP 웹 기본 지식 - 20]

WsCode 2022. 1. 23. 14:57

3xx - 리다이렉션1

클라이언트가 서버에게 요청했지만 완료하기 위해 유저 에이전트의 추가 조치 필요

• 300 Multiple Choices (거의 사용하지않음 , 본문내용에서는 정리하지않음)

• 301 Moved Permanently

• 302 Found

• 303 See Other

• 304 Not Modified

• 307 Temporary Redirect

• 308 Permanent Redirect

 

301, 308 : 리소의 URI가 영구적으로 이동된 경우, 

301 = 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될수있음(MAY)

308 = 리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)

 

일시적인 리다이렉션 - 302, 307, 303

- 리소스의 URI가 일시적으로 변경

302 Found = 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)

307 Temporary Redirect = 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다. MUST NOT)

303 See Other = 리다이렉트시 요청 메서드가 GET으로 변경

 

기타 리다이렉션 304

• 캐시를 목적으로 사용

• 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬PC에 저장된 캐시를 재사용한다.

  (캐시로 리다이렉트 한다.)

• 304 응답은 응답에 메시지 바디를 포함하면 안된다.

  (로컬 캐시를 사용해야 하므로)

• 조건부 GET, HEAD 요청시 사용

 

정리 : 

• 302, 301 Found -> GET으로 변할 수 있음

• 303 See Other -> 메서드가 GET으로 변경

• 304 Not Modified -> 캐쉬를 재사용함으로 다시 서버에서 다운받을필요가없음.

• 307 Temporary Redirect -> 메서드가 변하면 안됨

• 308 Permanent Redirect -> 리다이렉트시 요청 메서드와 본문 유지

 

현실 : 

307, 303을 권장하지만 현실적으로 이미 많은 애플리케이션 라이브러리들이 302를 기본값으로 사용

자동 리다이렉션시에 GET으로 변해도 되면 그냥 302를 사용해도 큰 문제 없음