본문 바로가기
CS

HTTP 상태코드

by 김선지 2024. 6. 9.

response 코드

 

1xx (Informational) : 요청이 수신되어 처리중

2xx (Successful): 요청 정상처리

3xx (Redirection): 요청을 완료하려면 추가 행동이 필요

4xx (Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가

5xx (Server Error): 서버 오류, 서버가 정상 요청 처리 불가

 

클라이언트가 모르는 상태코드를 서버가 반환하면? 299 -> 200으로 인식

 

2XX

200 => ok

201 => Created : 요청이 성공해서 새로운 리소스가 생성됨

202 => Accepted: 요청이 접수되었으나 처리가 완료되지 않음. ex_ 요청 접수 후 1시간 후 배치 프로세스가 요청 처리

204 => No Content: 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음. ex_ 웹 문서 편집기에서 save 버튼

 

웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 리다이렉트된다. (위치로 다시 get요청)

 

3XX

permanent

301 => Moved Permanently => 리다이렉트시 요청 메서드가 GET으로 변하고 본문이 제거될 수 있음 (May)

308 => Permanent Redirect => 리다이렉트시 요청 메서드와 본문 유지 

 

temporary

302 => Found => 리다이렉트시 요청 메서드가 GET으로 변하고 본문이 제거될 수 있음. (May) (일시적)

303 => See Other => 302와 기능은 같음, 리다이렉트시 요청 메서드가 GET으로 변경된다. (Must)

307 => Temporary Redirect => 302와 기능은 같음, 리다이렉트시 요청 메서드와 본문 유지 (변하면 안됨)

 

기타

300 => Multiple Choices => 안쓴다.

304 => Not Modified => 캐시를 목적으로 사용, 클라이언트에 리소스가 수정되지 않았음을 알려줘서 클라이언트는 저장된 캐시를 재사용한다. (응답에 메시지 바디를 포함하면 안됨.)

리다이렉션 종류

영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동 ex) /members => /users  (301, 308)

일시 리다이렉션: ex) 주문완료 후 주문 내역 화면으로 이동. PRG: Post/Redirect/Get

특수 리다이렉션: 결과 대신 캐시 이용

 

PRG: Post/Redirect/Get

Post 주문 후에 웹 브라우저를 새로고침 하면 POST 주문이 다시 요청되기 때문에 중복 주문이 될 수 있다.

그래서 Post가 성공하면 Redirect를 통해서 다른 페이지로 새롭게 Get을 받아줘야 한다.

(_새로고침은 마지막 요청을 새로고침 한다._)

 

효과: 

 1. POST로 주문 후 새로고침으로 인한 중복 주문 방지

 2. POST 주문 후 주문 결과 화면을 GET 메서드로 리다이렉트

 3. 새로고침 해도 결과 화면을 GET으로 조회

 4. 중복 주문 대신에 결과 화면만 GET으로 다시 요청

 

4XX

오류의 원인이 클라이언트에 있음. 클라이언트가 이미 잘못된 요청을 보내고 있기 때문에 똑같은 재시도가 실패함

 

400 => Bad Request => 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때

401 => Unauthorized => , 인증되지 않음. 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명. unAuthentication 이 맞지만 이름이 아쉬움

403 => Forbidden => 서버가 요청을 이해했지만 승인을 거부함. 주로 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우, UnAuthorization, ex) admin 등급이 아닌 사용자가 로그인은 헀지만, 어드민 등급의 리소스에 접근하는 경우

404 =>Not Found => 요청 리소스가 서버에 없거나 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스 숨기고 싶을 때, 403대신

 

5XX

서버 문제로 오류 발생, 서버에 문제가 있기 때문에 재시도시 성공할 수 있음

500 => 서버 내부 문제로 오류 발생, 애매할 시 띄우는 오류, 웬만하면 띄우면 안됨.

503 => Service Unavailable => 일시적 과부하 또는 예정된 작업으로 잠시 요청 처리 불가, Retry-After헤더 필드로 언제 복구되는지 보낼 수 있음

'CS' 카테고리의 다른 글

HTTP 헤더 - 헤더2 (캐시, 조건부)  (0) 2024.06.09
HTTP 헤더 - 헤더1  (0) 2024.06.09
URI와 웹 브라우저 요청 흐름, Stateful  (0) 2024.06.04
IP(인터넷 프로토콜), PORT, DNS  (0) 2024.06.03
Webpack, Babel, Polyfill  (0) 2024.04.07