학이시습

[CS] HTTP 상태 코드란? 본문

CS

[CS] HTTP 상태 코드란?

dbswndud 2024. 4. 8. 02:02


HTTP 상태 코드

HTTP 상태 코드는 클라이언트가 보낸 요청에 대한 서버의 응답 상태를 나타내는 코드입니다.

상태 코드는 세 자리 숫자로 되어 있습니다. 첫 번째 숫자는 HTTP 응답의 종류를 구분하는 데 사용하며 나머지 2개의 숫자는 세부적인 응답 내용 구분을 위한 번호입니다.

 

  • 1XX (정보) : 요청을 받았으며 작업을 진행 중이라는 의미
  • 2XX (성공) : 클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미
  • 3XX (리다이렉션) : 완전한 처리를 위해 추가 동작이 필요한 경우
  • 4XX (클라이언트 오류) : 없는 페이지를 요청하는 등 클라이언트의 요청 메시지 내용이 잘못된 경우
  • 5XX (서버 오류) : 서버 사정으로 메시지 처리에 문제가 발생한 경우

1XX - 정보 응답

  • 100 (계속) : 요청자는 요청을 계속해야 합니다. 
  • 101 (프로토콜 전환) : 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중임 
    • 프로토콜을 HTTP 1.1에서 업그레이드할 때 Upgrade 응답헤더에 표시함. 현재는 HTTP 1.1이 최신이므로 사용할 일이 없음 
  • 102 (처리중) : 처리 중임
    • 타임 아웃이 발생하지 않게 이 응답 코드를 표시함 

2XX - 성공

  • 200 (성공) : 서버가 요청을 성공적으로 처리했음
    • 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰임
  • 201 (생성됨) : 성공적으로 요청되었으며 서버가 새 리소스를 작성했음
    • 응답 헤더 Location에 새로운 리소스의 절대 URI를 기록함 
  • 202 (허용됨) : 서버가 요청을 접수했지만 아직 처리가 완료되지 않음 
    • 응답 헤더의 Location, Retry-After를 참고하여 클라이언트는 다시 요청을 보냄
  • 203 (신뢰할 수 없는 정보) : 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있음
  • 204 (콘텐츠 없음) : 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음
    • 응답에는 헤더만 있고 바디는 없음. DELETE 요청에 대한 응답에 많이 사용됨
  • 205 (콘텐츠 재설정) : 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음
    • 204 응답과 달리 요청자가 문서 보기를 재설정할 것을 요구함
  • 206 (일부 콘텐츠) : 서버가 GET 요청의 일부만 성공적으로 처리했음 
  • 207 (다중 상태) : 처리 결과가 여러 개임 (성공인지는 바디를 봐야지 알 수 있다)

3XX - 리다이렉션 

  • 300 (여러 선택항목) : 서버가 요청에 따라 여러 조치를 선택할 수 있음
    • 서버가 사용자 에이전트에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공함
  • 301 (영구 이동) : 요청한 페이지를 새 위치로 영구적으로 이동함
    • GET 또는 HEAP 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달됨
  • 302 (임시 이동) : 현재 서버가 다른 위치의 페이지로 요청해 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함
  • 303 (기타 위치 보기) : 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시함
    • HEAD 요청 이외의 모든 요청을 자동으로 다른 위치로 전달함
  • 304 (수정되지 않음) : 마지막 요청 이후 요청한 페이지는 수정되지 않음
    • 서버가 이 응답을 표시하면 페이지의 콘텐츠를 표시하지 않음
    • 요청자가 마지막으로 페이지를 요청한 후 페이지가 변경되지 않으면 이 응답을 표시하도록 서버를 구성해야 함
  • 305 (프록시 사용) : 요청자는 프록시를 사용하여 요청한 페이지만 액세스할 수 있음
    • 서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 함
  • 306 : 현재는 사용하지 않는 상태 코드입니다. (안 써요) 
  • 307 (임시 리다이렉션) : 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함

4XX - 클라이언트 에러 (요청 에러)

  • 400 (잘못된 요청) : 서버가 요청의 구문을 인식하지 못함
  • 401 (권한 없음) : 이 요청은 인증이 필요함. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있음
  • 402 (결제 필요) : 이 요청은 결제가 필요함
  • 403 (금지됨) : 서버가 요청을 거부하고 있음
    • ex) 사용자가 리소스에 대한 필요 권한을 가지고 있지 않음
  • 404 (찾을 수 없음) : 서버가 요청한 페이지를 찾을 수 없음
    • ex) 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 서버는 이 코드를 제공함
  • 405 (허용되지 않는 메소드) : 요청에 지정된 방법을 사용할 수 없음
    • ex) POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우
    • ex) 읽기 전용 리소스에 PUT 요청을 보내는 경우
  • 406 (허용되지 않음) : 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음
  • 407 (프록시 인증 필요) : 요청자가 프록시 인증해야 함. 서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 함
  • 408 (요청 시간초과) : 서버의 요청 대기가 시간을 초과함
  • 409 (충돌) : 서버가 요청을 수행하는 중에 충돌이 발생함
    • 서버는 응답할 때 충돌에 대한 정보를 포함해야 함.
  • 410 (사라짐) : 서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시함
    • 404 코드와 비슷하며 이전에 있었지만 더 이상 존재하지 않는 리소스에 대해 404 대신 사용하기도 함
    • 리소스가 영구적으로 이동된 경우 301을 사용하여 리소스의 새 위치를 지정해야 함

5XX - 서버 에러

  • 500 (내부 서버 오류) : 서버에 오류가 발생하여 요청을 수행할 수 없음
  • 501 (구현되지 않음) : 서버에 요청을 수행할 수 있는 기능이 없음
    • ex) 서버가 요청 메소드를 인식하지 못할 때
  • 502 (불량 게이트웨이) : 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았음
  • 503 (서비스를 사용할 수 없음) : 서버가 오버로드 되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없음 (대개 일시적인 상태임) 
  • 504 (게이트웨이 시간 초과) : 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했음
  • 505 (HTTP 버전이 지원되지 않음) : 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음

 


참고한 글들

https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

'CS' 카테고리의 다른 글

[CS] HTTP 메서드의 종류 & 속성  (0) 2024.03.21