HTTP 상태코드란? 401·403·404·500 차이
HTTP 상태코드의 뜻과 오류별 확인 방법을 정리합니다.
HTTP 상태코드는 서버가 요청을 받은 뒤 처리 결과를 숫자로 알리는 응답 정보입니다. 401은 유효한 인증 정보가 없다는 뜻이고, 403은 요청을 이해했지만 처리를 거부했다는 뜻입니다. 404는 요청한 리소스를 찾을 수 없음을, 500은 서버 내부에서 예기치 않은 문제가 생겼음을 나타냅니다.
안녕하세요. 사랑받는 IT 프로덕트의 첫걸음, 똑똑한개발자입니다.
오늘의 인사이트 요약
상태코드의 앞자리로 응답의 큰 범주를 구분합니다.
401·403·404는 인증·권한·주소를 나눠 확인합니다.
5xx 오류는 응답한 서버와 발생 시점부터 추적합니다.

1. HTTP 상태코드란? 요청 결과를 알리는 숫자

브라우저가 웹페이지나 API에 요청을 보내면 서버는 응답에 상태코드를 포함합니다. 코드는 세 자리 숫자로 표시되며, 앞자리로 큰 범주를 구분합니다. 1xx는 정보 전달, 2xx는 성공, 3xx는 리다이렉션, 4xx는 클라이언트 오류, 5xx는 서버 오류 범주입니다. 모든 상태코드가 장애를 뜻하지는 않습니다.
예를 들어 200 OK는 요청이 성공했음을 나타냅니다. 다만 HTTP 수준의 성공이 업무 전체의 완료를 보장하는 것은 아닙니다. 가상의 주문 API가 요청을 받아 처리 대기 상태를 반환했다면 결제와 배송까지 끝났다는 뜻으로 읽지 않습니다. 해당 API의 응답 본문과 업무 상태를 함께 확인합니다.
화면 문구와 실제 응답코드는 다를 수 있습니다
화면에 표시된 오류 문장은 서비스가 별도로 정한 안내일 수 있습니다. 원인을 좁히려면 개발자 도구의 Network 탭에서 실패한 요청을 골라 상태코드와 응답 내용을 살펴봅니다. 한 화면에서도 여러 요청이 서로 다른 결과를 받을 수 있으므로 페이지 문서 요청인지, 페이지 안에서 호출한 API인지 구분해야 합니다.
상태코드는 문제를 찾는 출발점이지 서버 내부 원인을 모두 설명하는 진단서는 아닙니다. 같은 코드여도 요청 주소와 응답한 시스템에 따라 확인할 대상이 달라집니다. 범주별 의미와 개별 코드가 궁금하다면 MDN의 HTTP 상태코드 목록을 참고해 보세요. 오류가 아닌 정상 응답도 함께 구분할 수 있습니다.
2. 401·403·404는 무엇이 다를까?

401 Unauthorized는 요청에 유효한 인증 정보가 부족하다는 뜻입니다.
로그인 정보나 API 토큰이 빠졌는지, 만료됐는지, 서버가 기대하는 방식으로 전달됐는지 살펴봅니다. 이름은 Unauthorized이지만 먼저 확인할 것은 인증입니다. 단순히 계정의 접근 등급이 낮다는 뜻으로만 이해하면 확인할 항목을 놓치기 쉽습니다.
403 Forbidden은 서버가 요청을 이해했지만 처리를 거부했다는 뜻입니다.
로그인한 사용자에게 해당 작업 권한이 없는 상황이 대표적이며, 서버 정책에 따른 다른 거부 조건도 있을 수 있습니다. 인증 정보가 유효해도 요청이 허용되는 것은 아닙니다. 다시 로그인하는 동작만 반복하기보다 요청 대상의 권한과 적용 정책을 살펴봅니다.
404는 서버 전체의 중단을 뜻하지 않습니다
404 Not Found는 요청한 리소스를 찾지 못했다는 응답입니다. 주소가 틀렸거나 콘텐츠가 삭제됐거나 연결 경로가 바뀌었을 수 있습니다. 서버가 존재 여부를 숨기려고 403 대신 404를 반환하기도 합니다. 코드만으로 삭제를 확정하거나 다른 사용자의 데이터가 존재하는지 추정하지 않습니다.
세 코드는 모두 4xx 범주지만 확인할 질문이 다릅니다. 인증 정보가 유효한지, 그 사용자에게 작업이 허용되는지, 주소와 리소스가 맞는지를 나눠 보면 됩니다. 인증과 거부의 의미를 더 구체적으로 살펴보고 싶다면 MDN의 401 설명과 403 설명을 참고해 보세요. 상태코드만으로 원인을 단정하지 않는 것이 중요합니다.
3. 500·502·503은 어디서 확인할까?

500 Internal Server Error는 서버가 예상하지 못한 상황 때문에 요청을 처리하지 못했다는 뜻입니다.
응답 숫자만으로 어느 코드에서 예외가 났는지는 알 수 없습니다. 발생 시각과 요청 주소, 가능하다면 요청 식별자를 확보해 서버 로그와 연결합니다. 사용자 화면에 내부 오류 상세를 그대로 보여주는 방식과는 구분합니다.
502 Bad Gateway는 게이트웨이나 프록시가 요청을 처리하려고 접속한 상위 서버에서 잘못된 응답을 받았다는 뜻입니다.
브라우저와 애플리케이션 사이에 여러 시스템이 있다면 어느 장비나 서비스가 502를 반환했는지 확인합니다. 응답한 프록시와 상위 서버의 로그를 함께 보면 연결된 요청을 좁히는 데 도움이 됩니다.
503의 재시도 안내는 별도로 살펴봅니다
503 Service Unavailable는 서버가 지금 요청을 처리할 준비가 되지 않았음을 뜻합니다. 과부하나 유지보수처럼 일시적인 상황이 원인일 수 있으며, 서버는 Retry-After 헤더로 다시 시도할 시점을 안내할 수 있습니다. 헤더가 항상 있는 것은 아닙니다. 실제 원인은 발생 시간의 운영 상태와 함께 확인합니다.
실패 응답을 봤다고 결제나 저장 요청을 무조건 반복하면 중복 처리가 생길 수 있습니다. 재시도 전에는 실제 반영 여부와 해당 API의 중복 방지 규칙을 확인하는 편이 좋습니다. 프록시 응답과 일시적 처리 불가의 의미는 MDN의 502 설명과 503 설명에서 더 자세히 보실 수 있습니다. 코드를 확인한 다음에는 영향을 받은 기능과 복구 여부까지 함께 점검합니다.
📚 이어서 읽어보세요
오류가 난 요청을 추적하려면 서비스 운영 로그 글을 읽어보세요.
웹서비스 개발과 운영을 함께 연결합니다
똑똑한개발자는 프로덕트 기획·디자인·개발·운영 경험을 바탕으로 웹서비스와 기존 시스템의 연결을 설계합니다. 화면의 오류 안내와 서버의 실제 처리 결과를 함께 살펴야 하는 기능에서도 사용자 흐름과 운영에 필요한 구성을 연결해 검토합니다.

웹서비스의 기능을 개발하거나 운영 중인 불편을 개선하고 싶다면 아래 똑똑한개발자 링크로 이야기 나눠주세요. 감사합니다.
HTTP 상태코드의 뜻과 오류별 확인 방법을 정리합니다.
https://www.toktokhan.dev/contact?utm_source=landing&utm_campaign=http-status-codes&utm_medium=http-status-codes&utm_term=HTTP+%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C