HTTP 상태코드 간단 정리

 

HTTP 상태코드

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

너무 많아서 사용하는건 그냥 케바케

 

 

Informational ( 1XX )

요청이 수신되어 처리중 (안씀)

 

 

Successful ( 2XX )

요청 정상 처리

200 (OK) 성공
(그냥 200만 쓰는 경우도 많음)
201 (Created)  요청 성공해서 새로운 리서스 생성..
POST 요청 → 생성ㅇㅋ
202 (Accepted) 요청이 접수는 됏는데 처리는 X ..
배치 처리가 필요한 경우! (잘 안씀)
204 (No Content) 요청은 성공했지만, 응답 페이로드 본문에 보낼 데이터가 없음.
(save기능 같은거 .. 저장해도 그냥 성공 여부만 필요한 경우)

 

 

 

Redirection  ( 3XX )

요청을 완료하려면 추가 행동이 필요

3XX 응답 결과에 Location 헤더가 있으면 해당 위치로 리다이렉트

url이 바꼈는데 이 전 url로 들어왔을 때 바뀐 url로 리다이렉트

 

(1) 영구 리다이렉션

특정 리소스의 url이 영구적으로 변경되었을 경우

301 (Moved Permanetly) 리다이렉트 요청이 GET으로 변하고 본문이 제거될 수 있음
308 (Permanent Redirect) 301과 기능 거의 같음.
단, 요청 메서드, 본문 유지

 

301 같은 경우는 POST로 등록하려고 했는데 ..

서버에서 301과 함께 바뀐 url 헤더에 넣어서 보냄

헤더 속 url 을 GET으로 보내고 메세지 바디가 없어짐

즉, 다시 처음부터 등록 진행해야함 (새로운 폼 화면)

 

308 같은 경우는 POST로 등록하려고 했는데 ..

서버에서 308과 함께 바뀐 url 헤더에 넣어서 보냄

POST 유지하고 내용도 함께 보냄

 

하지만 url이 바꼈다는 건 거의 구조도 바뀐거니까 대부분 301을 씀

 

(2) 일시 리다이렉션

일시적으로 변경

예를 들면 주문 완료 후 주문 내역 화면으로 이동.

나중엔 다른 화면으로 이동할수도 있음 (PRG)

302 (Found) 리다이렉트시 요청 메서드가 GET으로 변경하고 본문이 제거될 수도 있음 (명확하지 않음)
307 (Temporary Redirect) 302와 비슷.
대신 요청 메서드와 본문 유지
303 (See Other) 302와 비슷.
대신 무조건 GET으로 변경 (명확함)

 

PRG (Post/Redirect/Get)

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

그래서 POST로 주문하면 주문 결과 화면을 GET 메서드로 리다이렉트

그래서 새로고침해도 결과화면 GET 조회 반복

 

(3) 특수 리다이렉션

결과 대신에 캐시를 사용

300 (Multiple Choices) 안씀
304 (Not Modified) 캐시를 목적으로 사용.
클라이언트에게 리소스가 수정되지 않았음을 알려줌.

 

따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용함.

즉, 캐시로 리다이렉트 함

로컬 캐시를 사용해야해서 응답에 메시지 바디 포함X

 

 

Client Error ( 4XX )

클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음

이미 잘못 요청하고 있어서 재시도해도 실패함

400 (Bad Request) 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
요청 구문, 파라미터, API 스펙이 안맞을 때
401 (Unauthorized) 클라이언트가 해당 리소스에 대한 인증이 필요함 (로그인 실패)
403 (Forbidden) 승인을 거부, 권한이 불충분할 때
404 (Not Found) 요청한 리소스가 서버에 없을 때

 

인증과 인가

인증 (Authentication) : 본인이 누구인지 확인 (로그인)

인가 (Authorization) : 권한부여 (admin)

 

 

Server Error ( 5XX )

서버 오류, 서버가 정상 요청을 처리하지 못함

똑같은 요청을해도 서버에 따라 성공할 수 있음

500 (Internal Server Error) 서버 내부의 문제
503 (Service Unavailable) 서비스 이용 불가. 일시적인 과부하 또는 예정된 작업

 

앵간하면 500대 에러는 없도록 하자 ..

500 에러는 무조건 서버 관련된 것으로!


참고 강의 : https://taylog.tistory.com/203

 

[강의리뷰] “모든 개발자를 위한 HTTP 웹 기본 지식” 후기 | 인프런

모든 개발자를 위한 HTTP 웹 기본 지식김영한님의 실무에 필요한 HTTP 핵심 기능에 대한 강의다. 강의의 총 길이는 5시간 40분, 강의 구성은 아래와 같다.인터넷 네트워크URI와 웹 브라우저 요청 흐

taylog.tistory.com