Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

탐구개발

상태코드 301, 302, 303, 307, 308의 차이점 본문

HTTP

상태코드 301, 302, 303, 307, 308의 차이점

탐구개발자 2023. 11. 8. 14:04

HTTP 상태코드 300번대는 리다이렉션(redirect) 관련된 상태 코드입니다이들 상태 코드는 클라이언트가 요청한 리소스가 다른 위치에 있을  사용되며클라이언트를 새로운 URL 리다이렉트 하거나 다른 리소스로 이동시키는  사용됩니다. 그 중 301, 302, 303, 307, 308는 설명을 봐도 비슷한 내용이어서 잘 이해되지 않았습니다. 그래서 이 301, 302, 303, 307, 308의 차이점을 정리해 보았습니다.

 

리다이렉션 상태코드 비교

   
위치
변경
캐시
여부
메서드
변경
301
Moved Permanently
영구적
O
O
302
Found
일시적
지시
O
303
See Other
영구적
X
허가
307
Temporary Redirect
일시적
지시
 
308
Moved Permanently
영구적
O
 

 

위치변경

  • 영구적 : 새 도메인을 얻어 서버의 콘텐츠를 이동한 경우나 HTTP로 운영되던 페이지를 HTTPS로 전환한 경우
  • 일시적 : 점검 기간에만 요청을 관리 화면으로 리디렉트할 경우​

 

캐시여부

  • 클라이언트, 프록시, 검색 엔진에서 사용하는 캐시 업데이트 여부
  • 검색 엔진은 이 응답을 받으면 기존 페이지의 평가를 새로운 페이지로 계승함
  • 영구적으로 위치가 변경된 경우는 반드시 캐시가 변경되지만 일시적으로 변경된 경우는 기본적으로 캐시되지 않고 따로 캐시지시.
  • 303만 영구적이지만 캐시하지 않음

 

메서드변경

  • 첫번째 요청이 POST이고, 두번째 이후(리다이렉션)로 GET이나 HEAD를 사용할 경우에 사용자에게 확인필요 없이 실시할 수 있는지
  • 30X 응답 시 Location 헤더에 리다이렉트 주소를 넣어 응답하고 클라이언트는 응답을 받아 Location 헤더를 보고 리다이렉트 시 대부분 GET으로 재요청.
  • 301, 302, 303일 경우 허가없이 GET 요청 가능하고 307, 308일 경우 허가가 필요

역사적 배경

HTTP/1.0에서 HTTP/1.1사이에 리다이렉트 사양이 변경되면서 (POST 메서드 요청 후 GET 메서드로 변경 시 허가필요) 307, 308이 등장한 것으로 이해했습니다. 303은 302와 비슷하게 허가가 필요없이 GET으로 동작하지만 1.0와의 혼란을 막고자 등장했습니다

 

상태코드(HTTP버전) 용도
301 (HTTP/1.0) 도메인 전송, 웹사이트 이전, HTTPS
302 (HTTP/1.0) 일시적 관리, 모바일 기반 전송
303 (HTTP/1.1) 로그인 후 페이지 전환
307 (HTTP/1.1) RFC 7231에서 추가
308 (HTTP/1.1) RFC 7538에서 추가
 

 

 

 

참고 

HTTP 완벽 가이드, p73 (3.4.3 300-399 : 리다이렉션 상태코드)

리얼월드 HTTP, p53

'HTTP' 카테고리의 다른 글

Content-Security-Policy 헤더값  (1) 2023.11.08
CORS (교차 출처 리소스 공유)  (0) 2023.11.08
HTTPS(TLS) 통신 과정  (1) 2023.11.08
Referer 헤더값  (0) 2023.11.08
Cache-Control 헤더값  (0) 2023.11.08