[HTTP] HTTP 상태코드

HTTP상태코드란?

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

  • 100번대 부터 500번대까지 존재
  • 100단위로 각각의 특성이 존재
  • 큰 단위에서 의미가 사전에 부여되어 있으므로, 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 된다.

 

사용목적

적절한 상태코드를 서버에서 클라이언트로 return 해주어야 클라이언트도 그에 맞는 대처를 할수가 있다.

 

1xx(Informational)

  • 요청이 수신되어 처리중
  • 거의 사용X

2xx (Successful)

  • 요청 정상 처리
  • 주요 코드
    • 200 OK
      • ex) get 요청 이후 정상 data return시
    • 201 Created
      • ex)POST 요청 성공해서 새로운 리소스가 생성됨
      • 생성된 리소스는 응답의 Location 헤더 필드를 알려줌
      • 그러나 redirect를 시켜서 302상태코드가 찍히기도 함

3xx (Redirection)

  • 일반적으로, 현재의 페이지에서 다른 페이지로 리다이렉팅 되었음을 의미
  • 그래서 요청을 완료하려면 추가 행동이 필요
  • 주요 상태코드
    • 3xx – 리다이렉션
    • 301
      • 영구 리다이렉션
      • 308이 더 최신 상태코드
      • 검색 엔진 등에서도 변경 인지
    • 302 Found
      • 가장많이 사용
      • 일시적인 리다이렉션
      • 리다이렉션 활용 방법
        • Post/Redirect/Get
        • POST로 요청이후에 새로 고침으로 인한 POST요청 방지
        • POST로 요청 이후에 그 이후 302 + location으로 결과return
        • location으로 GET 메서드 리다이렉트
      • 307이 더 최신 상태코드
    • 304 Not Modified
      • GET요청시 사용자가 가지고 있는 리소스가 캐시된 리소스임을 명시하기 위해 사용
      • 클라이언트에게 리소스가 수정되지 않았음을 알려줌
      • 이미 사용자가 해당 리소스를 가지고 있으므로, 304 응답은 응답에 메시지 바디를 포함할 필요 없음.

⭐4xx (Client Error)

  • 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
  • 주요 상태코드
    • 400 Bad Request
    • 401 Unauthorized
      • 서버로의 접속이 인증되지 않았을때
      • 즉, 로그인이 되지 않았을때
    • 403 Forbidden
      • 인증 자격은 있지만, 접근권한이 없을때
    • 404 Not Found

5xx (Server Error)

  • 서버 오류, 서버가 정상 요청을 처리하지 못함
  • 주요 상태코드
    • 500 Internal Server Error
      • 별도의 지정된 상태 코드가 없을때 대부분의 서버에서 예외 발생시에 return
    • 503 Service Unavailable
      • 서버가 일시적인 과부하 또는 예정된 작업으로 인한 일시적 오류를 의미