본문 바로가기
Programming

HTTP 상태 코드 정리

by BTC_티모 2024. 1. 13.

탑신병자 듀오 팀 티모입니다.

이번 시간에는 HTTP 상태 코드에 대해 알아보겠습니다.


이미지 : http://blog.plura.io/?p=14782

 

HTTP는 웹 서버-클라이언트 간 데이터를 주고받기 위해 사용하는 통신 방식이며 TCP/IP 프로토콜로 동작합니다.

웹을 이용하려면 웹 서버와 클라이언트는 각각 TCP/IP 동작에 필수적인 IP 주소를 가져야 하며,

HTML이나 XML과 같은 하이퍼텍스트뿐 아니라 이미지, 음성, 동영상, PDF와 각종 문서 파일 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있다는 특징이 있습니다.

 

클라이언트와 서버 간 HTTP 연결 후, 클라이언트가 서버에 HTTP 요청 메시지를 보내면 서버는 요청에 따른 처리를 진행한 후에 그 결과를 클라이언트에 HTTP 응답 메시지로 보냅니다.

이 요청 메시지와 응답 메시지가 반복적으로 오가며 웹을 사용할 수 있게 됩니다. 

이 때 서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(status code)를 보고 파악할 수 있습니다.

상태 코드는 세 자리 숫자로 되어 있습니다.

첫 자리는 HTTP 응답의 종류를 구분하는 데 사용하며 뒤 2자리 숫자는 세부적인 응답 내용 구분을 위한 번호입니다.

현재 100~500번 대까지 상태 코드가 정의되어 있으며 크게 5가지로 분류해서 사용하고 있습니다.

 

  • 1XX: Informational(정보 제공)
    임시 응답으로 현재 클라이언트의 요청까지는 처리되었다는 의미입니다.
  • 2XX: Success(성공)
    클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미입니다.
  • 3XX: Redirection(리다이렉션)
    완전한 처리를 위해서 추가 동작이 필요한 경우입니다.

    주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미입니다.
  • 4XX: Client Error(클라이언트 에러)
    잘못 구성되었거나 존재하지 않는 페이지를 요청하는 등 클라이언트의 요청이 잘못된 경우를 의미합니다.
  • 5XX: Server Error(서버 에러)
    서버 사정으로 메시지 처리에 문제가 발생한 경우입니다.

 

각 코드를 보다 상세하게 알아보겠습니다.

100 Continue 클라이언트가 서버로 보낸 요청에 문제가 없으니 다음 요청을 이어서 보내도 됨을 의미합니다.
101 Switching Protocols 서버가 프로토콜을 전환 중임을 의미합니다.
102 Processing 서버가 아직 요청을 처리중이라 응답을 제대로 알려줄 수 없는 상태입니다.
103 Early Hints 웹페이지에 필요한 리소스에 대한 힌트를 제공해 리소스를 사전 로드하여 로딩을 빠르게 해줍니다. 

 

200 OK 클라이언트의 요청을 서버가 정상적으로 처리했음을 의미합니다. 주로 GET 요청에 대한 응답입니다.
201 Created 클라이언트의 요청을 서버가 정상적으로 처리했고, 새로운 리소스가 생김을 의미합니다. 주로 POST 요청에 대한 응답입니다.
202 Accepted 클라이언트 요청은 정상이지만, 서버가 아직 처리를 완료하지 않음을 의미합니다. 배치 처리와 같이 요청 후 일정 시간이 지난 후에 이를 처리하는 경우의 응답입니다.
203 Non-Authoritative Information 요청이 성공적으로 수행되었지만 검증이 되지 않음을 의미합니다. 웹사이트가 프록시 서버(CDN, VPN 등)를 사용할 때 반환되는 상태 코드이기도 합니다.
204 No Content 클라이언트의 요청은 정상적이지만, 응답으로 제공할 컨텐츠가 없음을 의미합니다. Delete 요청에 대한 응답으로 사용됩니다.
205 Reset Content 서버가 요청을 성공적으로 처리했지만, 콘텐츠를 표시하지 않는 상태입니다. 클라이언트 쪽에서 콘텐츠를 재설정할 것을 요구합니다.(브라우저 새로 고침 등)
206 Partial Content 서버가 리소스 범위의 일부 부분만 반환함을 의미합니다. (GET 요청의 일부만 성공적으로 처리했음)

 

300 Multiple Choices 요청에 대해 하나 이상의 리소스가 존재함을 의미합니다.
301 Moved Permanently 요청한 리소스의 URL이 변경되었음을 의미합니다.
특정 리소스 URL이 영구적으로 이동되며 HTTP 메서드가 GET으로 바뀝니다.
302 Found 요청한 리소스의 URL이 일시적으로 변경되었음을 의미합니다. 
특정 리소스의 URL이 일시적으로 이동되며 HTTP 메서드가 GET으로 바뀝니다.
303 See Other 요청한 리소스를 다른 URL에서 GET 요청을 통해 얻어야 함을 의미합니다.
304 Not Modified 리소스가 수정되지 않음을 의미합니다. 해당 응답을 받으면 클라이언트는 서버로부터 리소스를 재전송받지 않고 캐싱된 리소스를 사용합니다.
307 Temporary Redirect 302와 유사하며, 클라이언트는 HTTP 메서드를 유지한 채 요청을 재송신할 필요가 있음을 의미합니다.
308 Permanent Redirect 301 유사하며, 클라이언트는 HTTP 메서드를 유지한 채 요청을 재송신할 필요가 있음을 의미합니다.

 

400 Bad Request 잘못된 문법 등으로 인해 클라이언트가 올바르지 못한 요청을 보냈음을 의미합니다.
401 Unauthorized 인증되지 않은 사용자가 인증이 필요한 리소스를 요청하는 경우의 응답입니다. 보통 로그인이 필요한 API를 비로그인 사용자가 호출했을 때 사용됩니다.
403 Forbidden 클라이언트가 콘텐츠에 접근할 권한을 갖고 있지 않음을 의미합니다. 주로 특정 IP, 국가가 차단되어 있는 사이트에 접속을 시도한 경우 사용됩니다. 
404 Not Found 클라이언트가 요청한 리소스가 존재하지 않음을 의미합니다. 인증되지 않은 클라이언트로부터 리소스를 숨기기 위해 403 대신 이 응답을 전송하기도 합니다.
405 Method Not Allowed 현재 리소스에 맞지 않는 메서드를 사용했음을 의미합니다.
408 Request Timeout 요청에 응답하는 시간이 너무 오래 걸림을 의미합니다.
409 Conflict 요청이 현재 서버 상태와 충돌함을 의미합니다.
412 Preconditon Failed 서버가 클라이언트의 사전 조건부 요청을 실패한 경우입니다.
413 Payload Too Large 요청이 너무 커 서버가 처리할 수 없음을 의미합니다.
429 Too many Requests 클라이언트가 지정된 시간 내 너무 많은 요청을 보낸 경우입니다.

 

500 Internal Server Error 서버 내부에 오류가 발생하여 응답할 수 없음을 의미합니다.
501 Not Implemented 클라이언트 요청에 대한 서버의 응답 수행 기능이 없음을 의미합니다. 
502 Bad Gateway 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다. 보통 접속량 증가로 인해 과부하 상태 등으로 서버에 통신 장애가 발생했을 경우에 나타납니다.
503 Service Unavailable 서버가 요청을 처리할 준비가 되지 않음을 의미합니다. 유지 보수나 과부하 등의 이유로 일시적으로 이용 불가한 상태입니다.
504 Gateway Timeout 서버에서 게이트웨이 역할을 하고 있으며, 한 서버가 액세스 하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미합니다.

 


HTTP 상태 코드에 대해 알아보았습니다.

감사합니다.

 

'Programming' 카테고리의 다른 글

정규표현식 활용  (1) 2024.01.21
[Mybatis] For input string 에러  (1) 2024.01.17
Spring Boot Model validation 관련 애노테이션  (0) 2024.01.12
Overloading과 Overriding의 차이  (1) 2024.01.05
LLM 이란?  (1) 2024.01.05

댓글