HTTP 상태 코드
상태 코드
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
1xx(Informational) : 요청이 수신되어 처리 중(거의 사용 되지 않음)
2xx(Successful) : 요청 정상 처리
3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요
4xx(Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음
5xx(Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함
2xx - 성공
클라이언트의 요청을 성공적으로 처리
200 Ok
201 Created
202 Accepted
204 No Content
202 Accepted
요청이 접수되었으나 처리가 완료되지 않았음
- 배치 처리 같은 곳에서 사용
- ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함
204 No Content
서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
- ex) 웹 문서 편집기에서 save 버튼
- save 버튼의 결과로 아무 내용이 없어도 된다
- save 버튼을 눌러도 같은 화면을 유지해야 한다.
- 결과 내용이 없어도 204 메시지 만으로 성공을 인식할 수 있다
3xx - 리다이렉션
요청을 완료하기 위해 유저 에이전트(클라이언트 프로그램 주로 웹브라우저)의 추가 조치 필요
리다이렉션 이해
웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트)
리다이렉션의 종류
1. 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동
2. 일시 리다이렉션 - 일시적인 변경
ex) 주문 완료 후 주문 내역 화면으로 이동
3. 특수 리다이렉션
결과 대신 캐시를 사용
영구 리다이렉션
301, 308
리소스의 URI가 영구적으로 이동
원래의 URL을 사용 X, 검색 엔진 등에서도 변경 인지
301 Moved Permanently
리다이렉트시 요청 메소드가 get으로 변하고, 본문이 제거될 수도 있음
308 Permanent Redirect
301과 기능은 같음
리다이렉트시 요청 메소드와 본문 유지
일시적인 리다이렉션
302, 307, 303
리소스의 URI가 일시적으로 변경
따라서 검색 엔진 등에서 URL 을 변경하면 안됨
302,307,303 기능이 똑같다
하지만
302 Found
리다이렉트시 요청 메소드가 GET 으로 변하고, 본문이 제거될 수 있음
307 Temporary Redirect
302와 기능은 같음
리다이렉트시 요청 메소드와 본문 유지(요청메소드를 변경하면 안된다)
303 See Other
302와 기능은 같음
리다이렉트시 요청 메소드가 GET 으로 변경
307,303을 권장하지만 현실적으로 많은 애플리케이션 라이브러리들이 302를 기본값으로 사용
자동 리다이렉션시에 GET으로 변해도 되면 그냥 302를 사용해도 큰 문제 없음
304 Not Modified
캐시를 목적으로 사용
클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다
304 응답은 응답에 메시지 바디를 포함하면 안된다(로컬 캐시를 사용해야 하므로)
조건부 GET, HEAD 요청 시 사용
'CS 공부' 카테고리의 다른 글
RESTful API란? (0) | 2023.01.30 |
---|---|
CI / CD란? (1) | 2023.01.30 |
HTTP 상태 코드(4xx, 5xx) (0) | 2023.01.27 |
URI 와 웹 브라우저 요청 흐름 (0) | 2023.01.26 |
<인터넷 네트워크> IP, TCP, UDP, DNS 정리 (0) | 2023.01.12 |