http 상태 코드 종류 (1)

eeensu·2024년 1월 13일
0

용어 정리와 팁

목록 보기
20/26
post-thumbnail

개요

HTTP(Hypertext Transfer Protocol)는 웹 서버와 웹 클라이언트 간에 데이터를 주고받기 위해 사용하는 통신 프로토콜로, TCP/IP 프로토콜 위에서 동작한다. HTTP는 하이퍼텍스트뿐 아니라 이미지, 음성, 동영상, Javascript, PDF 등 모든 종류의 데이터를 전송할 수 있다.

웹 브라우저 주소창에 URL을 입력하고 Enter를 누르면, 웹 클라이언트와 웹 서버 사이에 HTTP 연결이 맺어지고 요청과 응답 메시지가 주고받아진다. 클라이언트는 http 요청 메시지를 생성하고 서버에 보내는 역할을 하며, 서버는 받은 요청을 처리하고 그 결과를 http 응답 메시지를 클라이언트에 전송한다.

서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(status code)를 보고 파악할 수 있다. 상태 코드는 세 자리 숫자로 되어 있는데 첫 번째 숫자는 HTTP 응답의 종류를 구분하는 데 사용하며 나머지 2개의 숫자는 세부적인 응답 내용 구분을 위한 번호이다. 세 자리 숫자 중 첫 번째 숫자는 다음과 같이 세 부류로 구분된다.

1xx (Information)

  • 임시 응답으로, 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미이거나 추가 정보가 필요함을 나타낸다.

2xx (Success)

  • 요청이 성공적으로 수행되었음을 나타낸다.

3xx (Redirection)

  • 완전한 처리를 위해서 추가 동작이 필요한 경우이다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미이다.

4xx (Client Error)

  • 클라이언트의 잘못된 요청이나 부족한 권한 등으로 인한 오류를 나타낸다.

5xx (Server Error)

  • 서버에서의 오류로 인해 요청을 수행할 수 없음을 나타낸다.

이제 1번대 부터 자세한 상태코드 종류를 알아보자. 출처는 MDN이다.




1xx

  • 100 (Continue)
    상태 코드 100은 클라이언트에게 현재까지의 상태가 정상이며, 계속해서 요청을 진행해도 무방하다는 것을 알려주는 임시적인 응답이다. 클라이언트가 요청을 완료하거나 추가 요청을 계속해도 되는지를 확인하기 위한 용도로 사용된다.

  • 101 (Switching Protocol)
    상태 코드 101은 클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답으로, 서버가 프로토콜을 변경할 것임을 알려준다. 예를 들어, HTTP에서 WebSocket으로의 전환을 의미할 수 있다.

  • 102 (Processing)
    상태 코드 102는 서버가 요청을 수신하고 처리 중이지만, 아직 완전한 응답을 제공할 수 없음을 알려준다. 이는 오랜 시간이 걸리는 작업이 진행 중일 때 사용될 수 있다.

  • 103 (Early Hints)
    상태 코드 103은 주로 Link 헤더와 함께 사용되어, 서버가 응답을 준비하는 동안 클라이언트가 사전 로딩을 시작할 수 있도록 하는 데 사용된다. 클라이언트에게 서버가 어떤 자원을 미리 힌트로 알려주는 역할을 한다.



2xx

  • 200 (OK)
    요청이 성공적으로 되었다는 코드이며 성공의 의미는 HTTP 메소드에 따라 달라진다.

    • GET : 리소스를 불러와서 메시지 바디에 전송되었다.
    • HEAD : 개체 해더가 메시지 바디에 있다.
    • PUT 또는 POST: 수행 결과에 대한 리소스가 메시지 바디에 전송되었다.
    • TRACE: 메시지 바디는 서버에서 수신한 요청 메시지를 포함하고 있다.
  • 201 (Created)
    요청이 성공하고 새로운 리소스가 생성되었음을 나타낸다. 주로 POST나 일부 PUT 요청 후에 발생한다.

  • 202 (Accepted)
    요청을 수신하였지만 그에 응하여 행동할 수 없음을 뜻한다. 이 응답은 요청 처리에 대한 결과를 이후에 HTTP로 비동기 응답을 보내는 것에 대해서 명확하게 명시하지 않는다. 이것은 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌다.

  • 203 (Non-Authoritative Information)
    돌려받은 메타 정보가 오리진 서버의 것과 일치하지 않지만 로컬이나 서드 파티에서 모아졌음을 나타낸다. 200 OK 대신에 우선적으로 사용된다.

  • 204 (No Content)
    응답으로 보낼 콘텐츠가 없음을 나타낸다. 헤더는 의미가 있을 수 있으며, 클라이언트는 캐시된 헤더를 업데이트할 수 있다.

  • 205 (Reset Content)
    요청을 완료한 후에 클라이언트에게 해당 문서 뷰를 리셋하라고 알려준다.

  • 206 (Partial Content)
    클라이언트가 복수의 스트림을 분할 다운로드하고자 범위 헤더를 전송한 경우 사용된다.

  • 207 (Multi-Status)
    여러 리소스가 여러 상태 코드를 가질 때, 해당 정보를 전달한다.

  • 208 (Multi-Status)
    WebDAV에서 사용되며, 컬렉션 내부의 여러 멤버를 열거할 때 사용된다.

  • 226 (IM Used)
    서버가 GET 요청에 대한 의무를 완료했고, 응답이 현재 인스턴스에 대해 하나 이상의 인스턴스 조작이 적용되었음을 알려준다.

3번대 부터는 다음 포스트에서 알아보자.

profile
안녕하세요! 26살 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글