HTTP 상태 코드 소개
클라이언트가 보낸 요청 처리 상태를 응답에서 알려주는 기능.
주로 2xx - 요청 정상 처리, 4xx - 클라이언트 오류, 5xx- 서버 오류 정도 기억해두자.
만약 모르는 상태 코드가 나타난다면?? 클라이언트는 상위 상태 코드로 해석해서 처리한다.
예를 들어 299가 ???? -> 2xx(Successful)
1xx는 요청이 수신되어 처리 중인 것을 뜻하는데 거의 사용하지 않는다고 한다.
2xx - 성공
클라이언트의 요청을 성공적으로 처리함을 뜻한다.
제일 많이 봤을법한 200 OK.
201 Created는 post로 뭔가 등록했을 때 요청 성공해서 새로운 리소스 생성을 알려준다.
204 No Content는 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없을 때이다.
결과 내용이 없어도 204 메시지 만으로 성공을 인식할 수 있다고 한다.
3xx - 리다이렉션
요청을 완료하기 위해 유저 에이전트(클라이언트 프로그램. 웹브라우저)의 추가 조치가 필요하다.
웹브라우저는 3xx 응답의 결과에 Location 헤더가 있으면 Location 위치로 자동 이동.
리다이렉션은 크게 영구 리다이렉션, 일시 리다이렉션, 특수 리다이렉션으로 나눌 수 있다.
영구 리다이렉션은 301 Moved Permanently 리다이렉트시 요청 메서드가 Get으로 변하고 본문이 제거될 수 있는 것,
308 Permanent Redirect 리다이렉트 시 요청 메시지와 본문 유지가 되는 것 두 가지가 있다.
일시적인 리다이렉션은 리소스의 URI가 일시적으로 변경이라 검색 엔진 등에서 URL을 변경하면 안 된다.
302 Found, 307 Temporary Redirect, 303 See Other 3가지 종류가 있다.
예시로는 POST로 주문 후에 새로 고침으로 인한 중복 주문 방지,
POST로 주문 후에 주문 결과 화면을 GET 메서드로 리다이렉트,
새로고침해도 결과 화면을 GET으로 조회,
중복 주문 대신에 결과 화면만 GET으로 다시 요청. 즉 새로 고침해도 GET으로 결과 화면만 조회.
기타 리다이렉션으로는 300 Multiple Choices,
캐시를 목적으로 사용하는 304 Not Modified가 있다.
304 응답은 로컬 캐시를 사용해야 하므로 응답에 메시지 바디를 포함하면 안 된다고 한다.
4xx - 클라이언트 오류, 5xx - 서버 오류
4xx는 오류의 원인이 클라이언트에 있다. 클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없다.
구체적으로 400 Bad Request는 요청 구문이나 메시지 등등의 오류로 클라이언트가 요청 내용을 검토, 재전송해야 한다.
401 Unauthorized는 인증 관련 오류로,
이 오류 발생 시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명해야 한다.
여기서 인증이란 본인이 누구인지 확인하는 것이고 인가란 권한 부여라는 것도 알아두자.
403 Forbidden은 서버가 요청을 이해했지만 승인을 거부한 것, 즉 인증 자격 증명은 있지만 권한이 불충분한 경우이다.
404 Not Found.....자주 봤을 법한 오류이다.... 요청 리소스가 서버에 없어서 찾을 수 없다는 것을 뜻한다.
5xx는 오류의 원인이 서버에 있다.
500 Internal Server Error는 서버 내부 문제로 오류 발생, 애매하면 500오류이다.
503 Service Unavailable은 서비스 이용 불가로,
서버가 일시적 과부하 또는 예정 작업으로 인해 잠시 요청 처리할 수 없음을 뜻한다.
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'DevOps&Infra > Network' 카테고리의 다른 글
HTTP 웹 기본 지식_캐시와 조건부 요청 (0) | 2022.03.24 |
---|---|
HTTP 웹 기본 지식_HTTP 일반 헤더 (0) | 2022.03.24 |
HTTP 웹 기본 지식_HTTP 메서드 활용 (0) | 2022.03.16 |
HTTP 웹 기본 지식_HTTP 메서드 (0) | 2022.03.16 |
HTTP 웹 기본 지식_HTTP 기본 (0) | 2022.03.16 |