HTTP

HTTP / HTTP 상태 코드

Dear-J 2025. 3. 31. 04:20

상태 코드

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

 

클라이언트가 인식할 수 없는 상태코드를 서버가 반환

>> 클라이언트는 상위 상태 코드로 해석해서 처리

>> 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경 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