728x90
728x90
클라이언트가 보낸 HTTP 요청에 대한 처리 상태를 응답에서 알려주는 기능이다.
1XX(Informational)
“요청이 수신되어 처리중”
- 거의 사용되지 않는다.
2XX(Successful)
“클라이언트의 요청을 성공적으로 처리”
200 OK
- GET 요청이 성공한 경우
201 Created
- POST 요청이 성공한 경우
- ‘새로운 리소스가 생성됨’을 의미한다.
202 Accepted
- 요청이 접수되었으나 처리가 완료되지 않은 경우
- ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리하는 작업
- 잘 사용하지 않는다.
204 No Content
- 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없는 경우
- 주로 save 작업에 해당한다.
- 서버가 클라이언트에게 전달해야 하는 데이터가 없다.
3XX(Redirection)
“요청을 완료하려면 유저 에이전트의 추가 행동이 필요”
- Redirect가 발생한다.
- 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다.
영구 리다이렉션
"특정 리소스의 URI가 영구적으로 이동"
301 Moved Permanently
- redirect 시 요청 메소드가 GET으로 변경된다.
- 본문이 제거될 수 있다.
308 Permanent Redirect
- redirect시 요청 메소드가 유지된다
- 본문이 유지된다.
일시 리다이렉션
"리소스 URI가 일시적으로 변경"
PRG(Post/Redirect/Get)란?
상품 주문 시 POST 요청으로 주문 후 웹 브라우저를 새로고침(=다시 요청)하면 중복 주문이 발생할 수 있다. 이를 해결하기 위해 일시 리다이렉션을 사용한다.
POST 주문 후 주문 결과 화면을 GET 리다이렉트하면 새로고침해도 GET 메소드를 재요청하기에 문제가 발생하지 않는다.
302 Found
- redirect 시 요청 메소드가 GET으로 변경된다. (무조건은 아니다)
- 본문이 제거될 수 있다.
307 Temporary Redirect
- redirect시 요청 메소드가 유지된다.
- 본문이 유지된다.
303 See Other
- redirect 시 요청 메소드가 무조건 GET으로 변경된다. (무조건)
기타 리다이렉션
300 Multiple Choices
- 사용하지 않는다.
304 Not Modified
- 캐시를 목적으로 사용한다.
- 캐시로 redirect 한다.
- 서버는 리소스가 수정되지 않았음을 알려준다.
- 클라이언트는 로컬 캐시를 재사용한다.
- 응답에 메시지 바디를 포함하면 안된다.
4XX(Client Error)
“클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음”
- 재시도를 해도 성공할 수 없다.
400 Bad Request
- 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없는 경우
- 요청 구문, 메시지 등 오류
401 Unauthorized
- 클라이언트가 해당 리소스에 대한 인증이 필요한 경우
- 인증(Authentication)되지 않은 경우
- 인가(Authorization)와 다른 의미이다.
- 명칭으로 인한 혼동의 여지가 있다.
403 Forbidden
- 서버가 요청을 이해했지만 승인을 거부하는 경우
- 인증했지만, 접근 권한이 불충분한 경우
404 Not Found
- 요청 리소스를 찾을 수 없는 경우
- 잘못된(또는 권한이 부족한) 리소스를 요청하는 경우
5XX(Server Error)
“서버 오류, 서버가 정상 요청을 처리하지 못함”
- 재시도 시 성공할 수도 있다.
500 Internal Server Error
- 서버 내부 문제로 오류 발생한 경우
- 애매한 모든 경우에 해당한다.
503 Service Unavailable
- 서비스 이용 불가
- 일시적 과부화, 예정된 작업으로 인해 서버가 요청을 처리할 수 없는 경우
- Retry-After 헤더 필드를 통해 복구 시기를 알릴 수 있다.
참고
728x90
728x90
'Computer Science > Computer Network' 카테고리의 다른 글
브라우저 URL 검색 과정 (0) | 2023.04.13 |
---|---|
URI, URL, URN (0) | 2023.04.13 |
DHCP (0) | 2023.04.04 |
IP(IPv4, IPv6), NAT (0) | 2023.04.03 |
OSI 7 계층 (0) | 2023.04.03 |