3xx - 리다이렉션2
일시적인 리다이렉션
Last updated
일시적인 리다이렉션
Last updated
일시적인 리다이렉션 302, 307, 303
리소스의 URI가 일시적으로 변경 => 검색 엔진 등에서 URL을 변경하면 안됨
302 Found : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)
307 Temporary Redirect : 302와 기능은 같음 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다. MUST NOT)
303 See Other : 302와 기능은 같음
리다이렉트시 요청 메서드가 GET으로 변경
PRG: Post/Redirect/Get POST로 주문후에 웹 브라우저를 새로고침하면? 마지막 요청 메시지가 POST이므로, 새로고침하게 되면 POST 방식의 요청메시지를 한 번 더 보내게 되어 중복 주문이 될 수 있다!
POST로 주문후에 새로 고침으로 인한 중복 주문 방지
POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트⭐️
새로고침해도 결과 화면을 GET으로 조회
중복 주문 대신에 결과 화면만 GET으로 다시 요청
PRG 이후 리다이렉션
URL이 이미 POST -> GET으로 리다이렉트 됨
새로 고침 해도 GET으로 결과 화면만 조회
302,307,303 정리 처음 302 스펙의 의도는 HTTP 메서드를 유지하는 것 그런데 웹 브라우저들이 대부분 GET으로 바꾸어버림(일부는 다르게 동작) 그래서 모호한 302를 대신하는 명확한 307, 303이 등장함(301 대응으로 308도 등장)
302 Found -> GET으로 변할 수 있음 (실제로도 302를 많이 쓴다!) 307, 303을 권장하지만 현실적으로 이미 많은 애플리케이션 라이브러리들이 302를 기본값으로 사용 자동 리다이렉션시에 GET으로 변해도 되면 그냥 302를 사용해도 큰 문제 없음
307 Temporary Redirect -> 메서드가 변하면 안됨
303 See Other -> 메서드가 GET으로 변경
기타 리다이렉션 300 304
300 Multiple Choices: 안쓴다.
304 Not Modified
캐시를 목적으로 사용
클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬PC에 저장된 캐시를 재사용한다. (캐시로 리다이렉트 한다.)
304 응답은 응답에 메시지 바디를 포함하면 안된다. (로컬 캐시를 사용해야 하므로)
조건부 GET, HEAD 요청시 사용