[NETWORK] HTTP Status Code - Redirection 302, 303, 307

Ritty·2022년 3월 13일
4

Network

목록 보기
1/1
post-thumbnail

HTTP Redirection

302와 303, 307은 응답으로 내려온 location(url)로 redirection 시킨다는 공톰점을 갖고 있다.

302, 303, 307 Status Code

  • 그렇다면 어떤 차이점이 있어 302와 303, 307 Status Code가 존재하는 것일까?

302 Found

  • 임시 리다이렉션으로 기존 요청의 body를 버리고 HEAD 요청을 제외하고 다른 요청은 모두 GET 요청으로 보내게 된다.

  • 사실 기존에 HTTP/1.0에서는 Moved Temporarily(임시 이동) 으로 지정되었지만, 많은 브라우저가 기존 HTTP 요청 메소드를 고려하지 않고 GET으로 요청을 변경하였다.

    • 따라서, HTTP/1.1에서 두 방법을 명확하게 하기 위해 303과 307을 추가하였다.

303 See Other

HTTP/1.1에서 추가된 것으로 요청에 대한 응답으로 GET 메소드를 사용한다. 예를 들어 PUT 메소드가 들어왔을 경우, PUT 데이터를 서버가 수신했다고 가정하고 GET 리다이렉션을 발행해야한다.

307 Temporary Redirect

HTTP Method를 기존의 요청의 Method와 같은 것으로
redirection 하게된다.
즉, GET 및 HEAD 이외의 요청 방법에 대해 기존 Method를 반복한 점을 제외하고 302와 동일합니다.

현실

하지만 현실에서는 주로 302를 사용한다. 대부분의 브라우저에서 302, 303, 307의 명세에 맞게 구분하여 사용하기 보단 302로 resource에 대한 요청을 GET Method 사용해 redirection하게 된다.

AWS ELB에서도 리다이렉션 시키게 되면 307을 사용할 수 없어, 리다이렉션을 거치면 모든 요청이 GET 요청으로 바뀌게 된다.

출처

profile
좋은 개발자가 되고 싶습니다.

0개의 댓글