I got IT

HTTP 상태 코드 본문

Network

HTTP 상태 코드

joshhoxy 2023. 5. 11. 09:58

IT 개발자, 엔지니어에게는 미국인의 13, 한국인의 4와 같이 치를 떨며 두려워하는 숫자들이 몇 개 있습니다.

바로 그것은 4xx, 5xx 숫자입니다. 

웹 서비스를 개발 및 테스트를 하다보면 한 번쯤은 마주칠 수 밖에 없는 숫자들.

우리는 그것을 HTTP 상태 코드라고 합니다.

 

HTTP 상태 코드의 종류

HTTP 상태 코드(HTTP status code)는 웹 서버에서 클라이언트로 전송되는 HTTP 응답 메시지에 포함되는 3자리 숫자입니다. 이 코드는 서버가 클라이언트의 요청에 대해 수행한 처리 결과를 알려주는 중요한 정보를 전달합니다. HTTP 상태 코드는 다양한 범주에 속하며, 가장 일반적인 상태 코드는 다음과 같습니다.

 

1xx (Informational) - 요청이 수신되었으며 계속 진행됩니다.
2xx (Successful) - 요청이 성공적으로 처리되었습니다.
3xx (Redirection) - 요청을 완료하기 위해 추가 작업이 필요합니다.
4xx (Client Error) - 클라이언트 측에서 잘못된 요청을 보냈습니다.
5xx (Server Error) - 서버 측에서 오류가 발생했습니다.

 

1xx, 2xx 상태코드는 웹 통신이 제대로 진행되고 있음을 나타내는 것이고 3xx는 리다이렉션 규칙을 재검토 하면 대부분 해결되는 문제입니다. 

저희가 두려워하는 녀석은 바로 4xx, 5xx 이 녀석들 입니다. 설명에도 잘못, 오류 라고 써있는 것을 보아 심상치 않죠? 흔히 말하는 에러 코드 입니다.

그렇다면 이러한 상태코드가 의미하는 바는 무엇인지 살펴보도록 합시다.

4xx : Client error responses

4xx는 클라이언트 측에서 잘못된 요청을 보냈을 때 수신하는 응답코드 입니다.

  • 400 Bad Request
    이 응답은 잘못된 문법으로 인하여 서버가 요청하여 이해할 수 없음을 의미합니다.
  • 401 Unauthorized
    비록 HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미합니다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.
    예를들어, 사용자가 로그인 되지 않은 상태에서 마이페이지 조회 같은 기능을 요청할 때 발생합니다.
  • 402 Payment Required
    이 응답 코드는 나중에 사용될 것을 대비해 예약되었습니다. 첫 목표로는 디지털 결제 시스템에 사용하기 위하여 만들어졌지만 지금 사용되고 있지는 않습니다.
  • 403 Forbidden
    클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를 들어, 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.
  • 404 Not Found
    서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수 있습니다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있습니다. 이 응답 코드는 웹에서 반복적으로 발생하기 때문에 가장 유명할지도 모릅니다.
  • 405 Method Not Allowed
    요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다. 예를 들어, 어떤 API에서 리소스를 삭제하는 것을 금지할 수 있습니다. 필수적인 메소드인 GET과 HEAD는 제거될 수 없으며, 이 에러 코드를 리턴할 수 없습니다.
  • etc 이 외에 406, 407,408, 409 ~~ 451 등 다양한 4xx 상태코드가 있습니다. 위에서는 빈번히 발생하는 상태코드에 대해 알아 보았습니다. 그 외에 자세한 내용은 다음 링크를 참고 하시면 좋을 것 같습니다. 🔗

5xx : Server error responses

5xx 에러는 서버측에서 에러가 발생했을 때 수신하는 응답 코드 입니다.

즉 개발자, 운영자 측 서비스 제공자의 측면에서 문제가 발생할 때 나타나는 코드로 많은 분들이 두려워 하는 숫자 입니다.

  • 500 Internal Server Error
    웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 더 구체적으로 설명할 수 없습니다.
  • 501 Not Implemented
    서버가 요청을 이행하는 데 필요한 기능을 지원하지 않음을 나타냅니다.
  • 502 Bad Gateway
    서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다.
    인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생합니다.
  • 503 Service Unavailable
    서버가 요청을 처리할 준비가 되지 않았습니다.
    일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버입니다.
    이 응답과 함께 문제를 설명하는 사용자 친화적인 페이지가 전송되어야 한다는 점에 유의하십시오.
    이 응답은 임시 조건에 사용되어야 하며, Retry-After: HTTP 헤더는 가능하면 서비스를 복구하기 전 예상 시간을 포함해야 합니다.
    웹마스터는 또한 이러한 일시적인 조건 응답을 캐시하지 않아야 하므로 이 응답과 함께 전송되는 캐싱 관련 헤더에 대해서도 주의해야 합니다.
  • 504 Gateway Timeout
    웹페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미합니다.
    이 오류 응답은 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을 경우 주어집니다.
    이 오류는 대게 인터넷상의 서버 간의 네트워크 오류이거나 실제 서버의 문제입니다. 컴퓨터, 장치 또는 인터넷 연결에 문제가 아닐 수 있습니다.
    *게이트웨이 → AWS_LB 의 경우. LB의 타겟에서 응답이 늦어질 경우 발생. 클라이언트에서 서버로 보낸 요청이 LB의 TTL 보다 늦어질때
  • 505 HTTP Version Not Supported
    서버에서 지원되지 않는 HTTP 버전을 클라이언트가 요청하였습니다.
    대부분의 웹 브라우저는 웹 서버가 1.x 버전의 HTTP 프로토콜을 지원한다고 가정합니다. 실제로 1.0 이하의 매우 오래된 버전은 요즘 거의 사용되지 않습니다.
    특히 최신 버전의 프로토콜보다 보안 및 성능이 좋지 않기 때문입니다. 따라서 웹 브라우저에서 이 오류가 표시되는 경우 웹 서버 소프트웨어에서 지원하는 HTTP 버전을 확인해 보아야 합니다.
  • more 🔗

 

보통은 501은 개발자 503은 엔지니어가 면밀히 살펴봐야하는 코드이다 ❗

물론 데봅스라면 둘 다 살펴보고 문제점을 파악할 수 있어야 하겠다 ❗