HTTP - 상태 코드

이건희·2023년 8월 20일
0

HTTP 영한님 강의를 들으며 배운 내용을 정리 해보고자 한다.

상태 코드

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

넓은 의미

  1. 1XX : 요청이 수신 되어 처리 중 - 거의 사용하지 않음

  2. 2XX : 요청 정상 처리

  3. 3XX : 요청을 완료하려면 추가 행동 필요 - Redirection

  4. 4XX : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가능

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

이렇게 백의 단위 숫자로 큰 틀에서 의미를 파악 할 수 있다. 조금 더 세부적으로 알아보자.


2XX

200 OK

  • 요청 성공

201 Created

  • 요청 성공으로 새로운 리소스가 생성됨
  • 생성된 리소스는 응답의 Location 헤더 필드로 식별

202 Accepted

  • 요청이 접수 되었으나 처리가 완료되지 않음
  • 예) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함

204 No Content

  • 서버가 요청을 성공적으로 수행 했지만, 응답 Payload 본문에 보낼 데이터가 없음
  • 응답 Body에 내용이 없는 경우 - 하지만 요청이 실패한 것은 아님

3XX

웹 브라우저는 3XX 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(Redirect)

영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동

  • 예) /members > /users

301 Moved Permanently

  • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문 제거 될 수 있음(POST -> GET)

308 Permanent Redirect

  • 리다이렉트시 요청 메서드와 본문 유지(POST -> POST)

일시 리다이렉션 - 일시적인 변경

  • PRG : Post/Redirect/Get

302 Found

  • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문 제거 될 수 있음

307 Temporary Redirect

  • 302와 기능적으로 같음

  • 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다 - MUST NOT)

303 See Other

  • 302와 기능적으로 같음

  • 리다이렉트시 요청 메서드가 GET으로 변경

PRG - Post/Redirect/Get

  • 새로 고침은 다시 요청

  • 만약 새로운 회원 등록 후, 결과 창에서 새로 고침 시, 기존 요청인 POST 요청을 다시 보내 회원 중복 등록

따라서 해결 방법은, POST로 등록 후 결과 화면을 GET 메서드로 리다이렉트 - 이후 새로 고침 시, 결과 화면 GET으로 조회

특수 리다이렉션

  • 결과 대신 캐시를 사용

304 Not Modified

  • 클라이언트에게 리소스가 수정되지 않았음을 알려준다.

  • 따라서 클라이언트는 캐시가 유효 기간이 끝나도 로컬 저장 캐시 다시 사용 가능

  • 304 응답은 메세지 바디를 포함하지 않고 헤더만 포함


4XX

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

400 Bad Request

  • 클라이언트가 잘못된 요청을 해서 서버가 요청 처리 불가능

401 Unauthorized

  • 클라이언트가 해당 리소스에 대한 인증이 필요함

  • 인증(Authentication) - 본인이 누구인지 확인 (로그인) != 권한 : ADMIN 권한

  • 이름은 Unauthorized지만, Authentication으로 생각

403 Forbidden

  • 서버가 요청을 이해했지만 승인 거부

  • 접근 권한이 불충분한 경우 - 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급 리소스에 접근

404 Not Found

  • 요청 리소스가 서버에 없음

  • 또는, 클라이언트가 권한이 부족한 리소스에 접근할 시 해당 리소스를 숨기고 싶을때


5XX

  • 서버 문제로 오류 발생

  • 4XX과 달리 서버에 문제가 있어, 재시도 시 성공 가능

  • 정말 서버에 문제가 있을때만 사용해야됨 - 서버 복구, 패치 등등

500 Internal Server Error

  • 서버 내부 문제로 오류 발생

  • 애매하면 500 오류

503 Service Unavailable

  • 서비스 이용 불가

  • 일시적인 과부하 또는 예정된 작업으로 잠시 요청 처리 불가능


출처 : 모든 개발자를 위한 HTTP 웹 기본 지식 - INFLEARN(영한)

profile
광운대학교 정보융합학부 학생입니다.

0개의 댓글