HTTP 상태 코드

상태 코드

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

100번대 (Informational)

  • 요청이 수신되어 처리중
  • 거의 사용하지 않음

200번대 (Successful)

  • 클라이언트의 요청을 성공적으로 처리
  • 200 : OK
    • 요청 성공
  • 201 : Created
    • 요청을 성공해서 새로운 리소스가 생성됨
  • 202 : Accepted
    • 요청이 접수는 됐으나 처리가 완료되지 않았음
    • 배치 처리 같은 곳에서 사용
  • 204 : No Content
    • 서버가 요청을 성공적으로 수행했으나, 응답 페이로드 본문에 보낼 데이터가 없는 경우
    • 웹 문서 편집기에서의 save 버튼
    • 결과 내용이 없더라도 204 메세지만으로 성공을 인식 가능

300번대 (Redirection)

  • 요청을 완료하기 위해 유저 에이전트(클라이언트 프로그램 - 웹 브라우저)의 추가 조치 필요
  • 종류
    • 영구 리다이렉션 - 특정 리소스 URI가 영구적으로 이동
      • 원래의 URL을 사용하지 않음
      • 검색 엔진 등에서도 변경 인지 가능
    • 일시적 리다이렉션 - 일시적인 변경
      • PRG (Post / Redirect / Get)
      • 검색 엔진 등에서 URL 변경하면 안됨
    • 특수 리다이렉션 - 결과 대신 캐시를 사용
  • 영구 리다이렉션
    • 301 : Moved Permanently
      • 리다이렉트시 요청 메소드가 GET으로 변경할 수 있음 (MAY)
      • 본문이 제거될 수 있음
    • 308 : Permanent Redirect
      • 301과 기능은 같음
      • 리다이렉트시 요청 메소드와 본문 유지 (변경되면 안돼 - MUST NOT)
  • 일시적 리다이렉션 (많이 쓰임)
    • 302 - Found
      • 리다이렉트시 요청 메소드가 GET으로 변경할 수 있음 (MAY)
      • 본문이 제거될 수 있음
    • 307 - Temporary Redriect
      • 302와 기능은 같음
      • 리다이렉트시 요청 메소드와 본문 유지 (변경되면 안돼 - MUST NOT)
    • 303 - See Other
      • 302와 기능은 같음
      • 리다이렉트시 요청 메소드가 GET으로 변경 (MUST)
    • PRG: Post / Redirect / GET
      • 일시적 리다이렉션에서 주로 쓰이는 패턴
      • POST로 주문 후에 새로고침으로 인한 중복 주문 방지
      • POST로 주문 후에 주문 결과 화면을 GET 메소드로 리다이렉트
      • 새로고침해도 결과 화면을 GET으로 조회하므로 중복 주문 방지 가능
      • 302, 303 사용
  • 특수 리다이렉션
    • 300 - Multiple Choices
      • 안 씀
    • 304 - Not Modified
      • 캐시를 목적으로 사용
      • 서버가 클라이언트에게 리소스가 수정되지 않았음을 알려줌
      • 로컬 PC에 저장된 캐시를 재사용 (캐시로 리다이렉트)
      • 로컬 캐시를 사용하므로 응답에 메세지 바디를 포함해선 안됨
      • 조건부 GET, HEAD 요청시 사용

리다이렉션


웹 브라우저가 300번대 응답 결과에 Location 헤더가 있으면, 해당 경로로 자동 이동해주는 기능

위키피디아 참고

400번대 (Client Error)

  • 클라이언트측 오류 (잘못된 문법 등)
  • 이미 잘못된 요청, 데이터를 보내고 있으므로 재시도는 당연히 실패
  • 400 : Bad Request
    • 잘못된 요청으로 서버가 요청을 처리할 수 없음
    • 요청 구문, 메시지 오류 등 (요청 파라미터, API 스펙이 잘못된 경우)
  • 401 : Unauthoried
    • 해당 리소스에 대한 인증(Unauthorized)이 필요
    • 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명
    • 오류 이름이 Unauthorized(인가)로 되어있는데 사실상 Unauthenticated(인증)이 맞음
  • 403 : Forbidden
    • 서버가 요청을 이해했지만 승인을 거부
    • 접근 권한이 불충분한 경우 (인가 X)
  • 404 : Not Found
    • 요청 리소스를 찾을 수 없음
    • 권한이 부족한 리소스에 접근할 때 리소스를 숨기고 싶은 경우에도 사용됨

500번대 (Server Error)

  • 서버 문제로 오류
  • 서버 문제이기 때문에 재시도하면 성공할 수 있음
  • 서버가 내부적으로 문제가 난 경우가 아니면 500을 쓰면 안됨
  • 500 : Internal Server Error
    • 서버 내무 문제로 오류 발생
    • 애매하면 이 친구로 내보내자
  • 503 : Service Unavailable
    • 일시적 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음
    • Retry - After 헤더 필드로 복구 예정 일시를 보낼 수 있음

인증과 인가


인증(Authentication) : 본인이 누구인지 확인 (로그인)
인가(Authorization) : 권한 레벨 (ex-ADMIN 권한)

위키피디아 참고



인프런 - 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 정리한 내용입니다.


김영한님 인프런 강의

댓글남기기