[네트워크] HTTP 상태 코드 정리

전윤혁·2024년 7월 30일

Networks

목록 보기
4/6

HTTP 상태 코드란?

HTTP 상태 코드는 웹 서버가 클라이언트의 요청을 처리한 결과를 나타내는 3자리 숫자 코드이다. 각 상태 코드는 요청의 성공 여부와 처리 결과를 간략하게 설명하며, 크게 아래의 5가지 범주로 나눌 수 있다.

  • 1XX: Informational (정보 제공)
  • 2XX: Success (성공)
  • 3XX: Redirection (리다이렉션)
  • 4XX: Client Error (클라이언트 에러)
  • 5XX: Server Error (서버 에러)

각 범주에 대하여, 상태 코드의 의미를 알아보자.

해당 글에서는 모든 상태 코드의 의미를 나열하기보다, 외워둘만한 주요 상태 코드들만 정리하였다. 평소 글보다 짧은 글이 될 예정!


✅ 1XX: Informational (정보 제공)

이 범주의 코드는 요청이 접수되었으며, 서버가 요청을 처리하고 있음을 나타낸다.

  • 100 (Continue)
    클라이언트가 요청의 일부가 수신되었고 계속해서 요청을 보내도 좋다는 의미이다.

  • 101 (Switching Protocols)
    클라이언트가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중이다.

  • 102 (Processing)
    서버가 요청을 처리 중이며, 완료까지 시간이 걸릴 수 있음을 나타낸다. (WebDAV)

📌 WebDAV (Web Distributed Authoring and Versioning)

HTTP 상태 코드 102는 WebDAV 확장에 따라 정의된 상태 코드이다. WebDAV는 웹에서 원격 콘텐츠를 편집하고 관리할 수 있도록 HTTP 프로토콜을 확장한 기술이다. WebDAV의 특성상 파일 조작이나 복잡한 작업이 많기 때문에 이러한 상태 코드가 유용하게 사용된다.


✅ 2XX: Success (성공)

이 범주의 코드는 요청이 성공적으로 처리되었음을 나타낸다.

  • 200 (OK)
    요청이 성공적으로 처리되었으며, 응답에 요청한 자원이 포함되어 있다.

  • 201 (Created)
    요청이 성공적으로 처리되었고, 새로운 자원이 생성되었음을 의미한다.

  • 202 (Accepted)
    요청이 접수되었으나, 아직 처리되지 않았음을 의미한다.


✅ 3XX: Redirection (리다이렉션)

이 범주의 코드는 클라이언트가 요청을 완료하기 위해 추가 조치를 취해야 함을 의미한다.

  • 301 (Moved Permanently)
    요청한 자원이 영구적으로 새로운 URL로 이동했음을 의미한다.

  • 303 (See Other)
    요청한 자원을 다른 URL에서 확인할 수 있음을 의미하며, 클라이언트는 응답 헤더 Location에 표시된 URL에서 GET으로 자원을 취득할 수 있다.

  • 307 (Temporary Redirect)
    요청한 자원이 일시적으로 다른 URI로 이동했으며, 클라이언트는 원래의 요청 메소드를 사용해 새로운 URL을 요청해야 한다.

📌 Redirection이란?

Redirection이란 특정 목적을 달성하기 위해서 사용자를 접속 페이지가 아닌 다른 페이지로 보내는 것이다. 접근 불가능한 페이지나 유저에게 보여서는 안되는 페이지에 대하여 Redirection이 수행된다.

📌 상태 코드 303과 307

상태 코드 303과 307 모두 기본적으로 302 응답 코드와 같은 의미를 갖는다.

  • 302 (Found): 요청한 리소스를 다른 URL(응답 헤더 Location에 표시된 URL)에서 찾았다. 해당 URL로 요청을 재송신할 필요가 있다.

303과 307의 주된 차이는, 303의 경우 리다이렉트시 요청 메소드가 무조건 GET으로 변경되고, 307의 경우 리다이렉트시 요청 메소드와 본문을 유지(요청 메서드 변경 X)한다는 점이다.

또한, 302의 의미를 정확하게 개선한 것이 307이므로, 302의 사용은 권장되지 않는다.


✅ 4XX: Client Error (클라이언트 에러)

이 범주의 코드는 클라이언트의 잘못된 요청으로 인해 서버가 요청을 처리할 수 없음을 나타낸다.

  • 400 (Bad Request)
    요청의 구문이 잘못되어 서버가 이해할 수 없다.

  • 401 (Unauthorized)
    인증이 필요하거나 인증이 실패하여, 지정한 자원에 대한 권한이 없다.

  • 403 (Forbidden)
    401 코드 이외의 이유로 요청한 자원에 대한 접근이 금지되었다.

  • 404 (Not Found)
    요청한 자원을 서버에서 찾을 수 없다.


✅ 5XX: Server Error (서버 에러)

이 범주의 코드는 서버가 유효한 요청을 처리할 수 없음을 나타낸다.

  • 500 (Internal Server Error)
    서버 내부에서 오류가 발생하여 요청을 처리할 수 없다.

  • 501 (Not Implemented)
    서버가 요청된 기능을 지원하지 않거나 구현하지 않았다.

  • 502 (Bad Gateway)
    서버가 게이트웨이나 프록시 역할을 하며, 상위 서버로부터 잘못된 응답을 받았다.

📌 게이트웨이(Gateway)와 프록시(Proxy)

  • 게이트웨이(Gateway)
    게이트웨이(Gateway)란 다른 네트워크로 가기 위한 문 정도로 이해할 수 있다. 게이트웨이는 두 개 이상의 네트워크 프로토콜을 연결하거나 변환하여 서로 다른 시스템이 데이터를 간단하게 주고받을 수 있도록 한다.
  • 프록시(Proxy)
    프록시(Proxy)란 클라이언트와 서버 사이에 위치하여 클라이언트의 요청을 대신 처리하는 중개 서버이다. 프록시는 클라이언트의 요청을 받아 실제 서버에 전달하고, 서버로부터 받은 응답을 클라이언트에 전달하는 역할을 한다.
profile
전공/개발 지식 정리

0개의 댓글