| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- MFA 분실
- EC2
- AWS EBS
- 디스크 성능테스트
- 테라폼 자동완성
- 텔레메트리란
- xfs_quota
- EBS
- 리눅스 시간대
- Authenticator
- ebs 마운트
- 리눅스
- /etc/fstab 설정
- Mac Terraform
- epxress-generator
- 컨테이너 터미널 로그아웃
- AWS
- Terrafrom
- MFA 인증
- ebs 재부팅
- 볼륨 연결
- 볼륨추가
- 테라폼 설치
- docker -i -t
- 컨테이너 터미널
- EBS 최적화
- 테라폼 캐시
- 테라폼 맥
- /etc/fstab 뜻
- docker 상태
- Today
- Total
I got IT
HTTP 상태 코드 본문

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은 엔지니어가 면밀히 살펴봐야하는 코드이다 ❗
물론 데봅스라면 둘 다 살펴보고 문제점을 파악할 수 있어야 하겠다 ❗