상태 코드
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
클라이언트가 인식할 수 없는 상태코드를 서버가 반환
>> 클라이언트는 상위 상태 코드로 해석해서 처리
>> 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경 x
>> 299 ??? : 2xx, 451 ??? : 4xx, 599 ??? : 5xx
1xx (Informational)
요청이 수신되어 처리중
거의 사용 x : 생략
2xx (Successful)
요청 정상 처리
200 OK
요청 성공
201 Created
요청 성공해서 새로운 리소스 생성
202 Accepted
요청이 접수되었으나 처리 완료 x
>> 배치 처리 같은 곳에서 사용
>> 예) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청 처리
204 No Content
서버가 요청 성공적 수행, but 응답 페이로드 본문에 보낼 데이터 x
>> 예) 웹 문서 편집기에서 save 버튼
>> save 버튼의 결과로 아무 내용 없어도 됨, 같은 화면 유지
>> 결과 내용이 없어도 204 메시지 만으로 성공 인식 가능
3xx (Redirection)
요청을 완료하려면 추가 행동이 필요
웹 브라우저는 3xx 응답 결과에 Location 헤더 있으면
>> Location 위치로 자동 이동
영구 리다이렉션 301, 308
리소스 URI 영구적 이동
원래 URL 사용 x, 검색 엔진 등에서도 변경 인지
301 Moved Permanently
리다이렉트시 요청 메서드가 GET으로 변하고, 본문 제거 가능(MAY)
308 Permanent Redirect
301과 기능 같음
리다이렉트시 요청 메서드와 본문 유지
>> 처음 POST를 보내면 리다이렉트도 POST 유지
일시적인 리다이렉션 302, 307, 303
리소스의 URI가 일시적 변경
>> 검색 엔진 등에서 URL 변경 x
302 Found
리다이렉트시 요청 메서드가 GET으로 변하고, 본문 제거 가능(MAY)
307 Temporary Redirect
302와 기능 같음
리다이렉트시 요청 메서드와 본문 유지(요청 메서드 변경 x, MUST NOT)
303 See Other
302와 기능 같음
리다이렉트시 요청 메서드가 GET으로 변경
PRG : Post/Redirect/ Get
POST 주문 후 웹 브라우저 새로고침?
>> 새로고침은 다시 요청(중복 주문 가능성)
POST로 주문 후 주문 결과 화면을 GET 메서드로 리다이렉트
새로고침 해도 결과 화면을 GET으로 조회
중복 주문 대신 결과 화면만 GET으로 다시 요청
304 Not Modified
캐시 목적 사용
클라이언트에게 리소스가 수정되지 않았음을 알려줌
>> 클라이언트는 로컬 PC에 저장된 캐시 재사용(캐시로 리다이렉트)
304 응답은 응답에 메시지바디 포함 x(로컬 캐시 사용)
4xx (Client Error)
클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
오류의 원인 : 클라이언트
>> 이미 잘못된 요청, 데이터(똑같은 재시도 실패함)
400 Bad Request
클라이언트가 잘못된 요청을 해서 서버가 요청 처리 x
>> 요청 구문, 메시지 등등 오류
>> 클라이언트는 요청 내용 다시 검토, 보내야 함
>> 예) 요청 파라미터 잘못, API 스펙 맞지 x
401 Unauthorized
클라이언트가 해당 리소스 인증 필요
인증(Authentication) 되지 않음
>> 응답에 WWW-Authenticate 헤더와 함께 인증 방법 설명
인증(Authentication) : 본인이 누구인지 확인(로그인)
인가(Authorization) : 권한 부여(ADMIN 권한처럼 특정 리소스에 접근 권한)
403 Forbidden
서버가 요청을 이해했지만 승인 거부
인증 자격 증명 있지만 접근 권한 불충분
>> ADMIN 등급이 아닌 사용자가 어드민 등급의 리소스에 접근
404 Not Found
요청 리소스 찾을 수 없음
요청 리소스가 서버에 없음
클라이언트가 권한이 부족한 리소스에 접근할 떄
>> 해당 리소스를 숨기고 싶을 때
5xx (Server Error)
서버 오류, 서버가 정상 요청을 처리하지 못함
500 Internal Server Error
서버 문제로 오류 발생, 애매하면 500 오류
503 Service Unavailable
서비스 이용 불가
서버가 일시적 과부하 또는 예정 작업으로 잠시 요청 처리 x
Retry-After 헤더 필드로 얼마뒤 복구되는지 보내기 가능
출처 : 김영한, 모든 개발자를 위한 HTTP 웹 기본 지식
'HTTP' 카테고리의 다른 글
HTTP / HTTP 헤더(캐시와 조건부 요청) (0) | 2025.03.31 |
---|---|
HTTP / HTTP 헤더(일반) (0) | 2025.03.31 |
HTTP / HTTP 메서드 활용 (0) | 2025.03.30 |
HTTP / HTTP 메서드 (0) | 2025.03.27 |
HTTP / HTTP 기본 (0) | 2025.03.26 |