-
301 Moved Permanently
- 리퀘스트된 리소스에 새로운 URI가 부여되어 있어 이후로는 그 리소스를 참조하는 URI를 사용해야 한다는 것을 나타냄
- 북마크하고 있는 경우에 Location 헤더 필드에서 가리키고 있는 URI에 북마크를 다시 하는게 좋다는 것을 나타냄
-> 만약 사용자가 북마크로 저장한 페이지의 URL이 301 상태 코드와 함께 변경된다면, 클라이언트는 서버가 "Location" 헤더 필드로 보낸 새로운 URL을 확인하고, 해당 URL을 다시 북마크해야 함을 의미
-
302 Found
- 301과 비슷하게 리퀘스트된 리소스에 새로운 URI가 할당되어 있어 해당 URI를 참조하라는 것을 나타냄
- 301과 다른 점은 페이지의 URI가 영구적인 이동이 아닌 일시적인 이동으로 앞으로 이동될 가능성이 있다는 것
- 북마크한 경우 301처럼 북마크를 변경하는 것이 아니라 302를 돌려준 페이지에 대해서 계속 북마크를 변경해야 함
-
303 See Other
- 리퀘스트에 대한 리소스는 다른 URI에 있어 GET 메소드를 사용해 얻어야 한다는 것을 나타냄
- 302와 비슷하지만 리다이렉트 장소를 GET 메소드로 얻어야 한다고 명확하게 되어 있는 점이 다름
- ex. POST 메소드로 액세스한 CGI 프로그램을 실행 후 처리 결과를 별도의 URI에 GET 메소드로 리다이렉트 시키고 싶은 경우에 사용
-> 302도 같은 일이 가능하지만 303을 쓰는 것이 바람직
-> 사용자가 폼을 제출하여 데이터를 서버로 전송하는 경우 POST 요청으로 데이터를 보낸 후에 그 결과를 별도의 URI에서 GET 요청으로 볼 수 있도록 리다이렉트하려면 303 상태 코드를 사용할 수 있음
- 서버는 클라이언트의 POST 요청을 처리하고 결과를 저장한 후, 303 상태 코드와 함께 "Location" 헤더 필드에 결과 페이지의 URL을 제공
- 클라이언트는 이 URL로 GET 요청을 보내 결과 페이지를 확인 가능
-
301, 302, 303 리스폰스 코드가 되돌아 오면, 대부분의 브라우저에서는 POST를 GET으로 바꾸어 리퀘스트의 엔티티 바디를 삭제하고 리퀘스트를 자동적으로 재송신하도록 되어 있다.
-
304 Not Modified
- 3xx지만 Redirect와 관계 없는 코드
- 클라이언트가 조건부 리퀘스트를 했을 때 리소스에 대한 액세스는 허락하지만 조건이 충족되지 않음을 표시
- 304의 경우 리스폰스 바디에 어떤 것도 포함되어 있어선 안 됨
- 304 Not Modified는 서버의 리소스가 변경되지 않았을 때 불필요한 데이터 전송을 방지하기 위해 사용 됨
- 클라이언트가 요청을 보내면, 서버는 리소스가 변경되었는지 여부를 확인하고, 변경이 없으면 상태 코드 304를 반환하여 클라이언트에게 리소스를 다시 다운로드하지 않아도 되는 것을 알림
- 클라이언트는 서버의 응답에 포함된 "ETag"나 "Last-Modified"와 같은 헤더 정보를 기반으로 브라우저에 캐시된 리소스를 그대로 사용함으로써 리소스를 다시 다운로드할 필요 없이 로컬 캐시를 사용하여 페이지 로딩 속도를 향상시킴
-
307 Temporary Redirect
- 302와 같은 의미지만 307에서는 브라우저 사양에 따라 POST에서 GET으로 치환하지 않음
- 클라이언트가 POST 요청을 보낸 경우에도 리다이렉트된 리소스로 POST 요청이 유지
- 브라우저가 더 정확한 의도를 유지하며 리다이렉트를 처리할 수 있도록 도와줌