HTTP redirect status code

HTTP 3xx redirection

3으로 시작하는 HTTP 응답 상태 코드는 리디렉션을 나타낸다.

response header에는 Location 헤더가 있어 리디렉션을 할 주소를 나타낸다.

301 Moved Permanently

요청받은 리소스가 영구적으로 이동했다는 응답 코드.

해당 코드로 리디렉션이 수행될 때 요청한 method와 body가 변경되면 안되지만, 모든 브라우저가 이를 지키는 것은 아니다. 따라서 GET, HEAD 메소드에 대한 리디렉션으로 301 응답 코드를 사용하는 것을 추천한다.

메소드 변경을 금지하고 싶다면 308 Permanent Redirect를 사용해, POST 요청에 대한 리디렉션으로 다시 POST 요청을 하도록 할 수 있다.

302 Found

요청받은 리소스가 일시적으로 이동했다는 응답 코드.

301과 마찬가지로 스펙상에서는 요청한 method와 body가 변경되면 안된다고 나와있지만, 이를 지키지 않는 브라우저가 존재한다. 따라서 GET, HEAD 메소드에 대한 리디렉션으로 302를 사용하는 것을 추천한다.

메소드 변경을 금지하고 싶다면 307 Temporary Redirect를 사용해 메소드 및 바디의 변경을 금지할 수 있다.

만약 GET으로 변경되는 리디렉션을 이용하고 싶다면 303 See Other를 이용하자.

303 See Other

새롭게 업로드된 리소스를 가리키는 것이 아닌 다른 페이지로 연결된다. 리디렉션에 사용된 메소드는 항상 GET이므로, PUT과 POST 요청에 대한 결과로 메소드를 변경해 다른 페이지(확인 페이지나 업로드 진행 과정 페이지 등)를 보여주고 싶다면 303을 사용하자.

307 Temporary Redirect

요청받은 리소스가 일시적으로 이동했다는 응답 코드.

302와는 다르게 메소드와 바디가 변경되지 않도록 보장한다.

308 Permanent Redirect

요청받은 리소스가 영구적으로 이동했다는 응답 코드.

301과는 다르게 메소드 및 바디가 변경되지 않음을 보장한다.