ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3xx Redirection
    개발 2021. 5. 5. 22:58

    3xx Redirection

     

    요청을 완료하기 위해 유저의 추가적 조치가 필요한 상황

    웹 브라우저는 3xx 응답의 결과에 location header 가 존재 시 해당 location으로 이동하며 이를 redirect라 한다.

     

    영구 redirection - 특정 리소스가 영구적으로 이동하는 케이스

    • 원래의 url을 사용하지 않는다.
    • 검색엔진 등에서도 변경을 인지한다.
    • 301 moved permanently
      • 리다이렉트시 요청 메서드가 get으로 변하고 본문 제거 될 수도 있음 (MAY)
    • 308 permanent redirect
      • 301과 기능은 같으나 리다이렉트 요청시 메서드와 본문 유지 (Post -> Post)

     

    • 실무에선 POST로 와도 GET으로 돌림 (308 잘안씀 301 쓴다)
    • Ex) /members -> /users

     

    일시적인 redirection - 일시적인 변경 (실무에서 가장 많이 쓰인다)

    • 리소스의 url가 일시적으로 변경
    • 따라서 검색 엔진 등에서 url을 변경하면 안된다.
    • 302 Found (메서드를 유지하는 것이 302 스펙의 의도)
      • 리다이렉트 요청시 메서드가 get으로 변하고 본문이 제거 될 수 도 있음 (MAY)
      • 302 Temporary Redirect
      • 302와 기능은 같으나 리다이렉트시 요청 메서드와 본문 유지(요청 메서드 변경 x)
    • 303 See Other
      • 302와 기능은 같으나 리다이렉트시 요청 메서드가 Get으로 변경
    • 주문 완료 후 주문 내역 화면으로 이동
    • PRG : Post/Redirect/GET
      • POST로 주문 후 새로 고침으로 인한 중복 주문 방지
      • POST로 주문 시 주문 결과 화면을 GET 메서드로 리다이렉트
      • 새로고침해도 결과 화면을 GET으로 조회 -> 중복 주문 대신 결과화면만 요청
        • ex) Post로 주문 후 웹 브라우저에서 새로고침 (PRG 전)
          • 새로고침은 다시 요청을 보낸다 -> 중복 주문이 될 수도 있음.
        • ex) Post로 주문 후 웹 브라우저에서 새로고침 (PRG 적용)
          • 새로고침으로 보내도 메서드가 변동되어 다른 작용을 하게됨 -> 중복 주문 방지
    • 모호한 302를 대신하는 명확한 307,303 이등장(301 대응으로 308)
    • 303,307을 권장하지만 현실적으로 많은 애플리케이션 라이브러리들이 302를 기본 값으로 사용한다. 

    특수한 redirection - 결과 대신 캐시를 사용 하는 경우

    • 300 Multiple Choices 안쓴다.
    • 304 Not Modifed
      • 캐시를 목적으로 사용한다.
      • 클라이언트에게 리소스가 수정되지 않았음을 알린다. 
      • 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다. (캐시로 리다이렉트 한다)
      • 응답에 메시지 바디를 포함하면 안된다 (로컬 캐시를 사용해야 하기 때문)
      • 조건부 GET, HEAD 요청시 사용한다.

    '개발' 카테고리의 다른 글

    5xx Server Error  (0) 2021.05.05
    4xx Client Error  (0) 2021.05.05
    HTTP API 설계하기  (0) 2021.03.18
    HTTP METHOD - PUT&PATCH&DELETE  (0) 2021.02.02
    HTTP METHOD - GET & POST  (0) 2021.02.02
Designed by Tistory.