HTTP 상태 코드 정리 — 2xx부터 5xx까지

정처기 2026-08-17 14:42:32 정처기네트워크http상태코드

글 목록 →

HTTP 상태 코드는 서버가 클라이언트 요청을 어떻게 처리했는지 알려주는 세 자리 숫자다. 응답 첫 줄 HTTP/1.1 404 Not Found에서 404가 상태 코드이고, Not Found는 사람이 읽기 위한 짧은 설명이다. 클라이언트는 이 숫자만 보고도 요청이 성공했는지, 어디로 다시 가야 하는지, 무엇을 고쳐 다시 보내야 하는지 기계적으로 판단한다.

핵심 원리 — 첫 자리가 클래스를 정한다

세 자리 중 맨 앞자리가 응답 성격을 다섯 갈래로 나눈다.

  • 1xx (정보): 처리를 계속한다는 중간 응답
  • 2xx (성공): 요청이 정상 처리됐다
  • 3xx (리다이렉션): 완료하려면 다른 URI로 추가 이동이 필요하다
  • 4xx (클라이언트 오류): 요청 자체에 문제가 있어 처리할 수 없다
  • 5xx (서버 오류): 요청은 유효했지만 서버가 처리에 실패했다

뒤 두 자리는 클래스 안의 구체적 사유를 가리킨다. 처음 보는 코드라도 첫 자리만 보면 “성공인지 실패인지, 내 탓인지 서버 탓인지”는 구분된다.

클래스별 대표 코드

2xx: 200 OK(정상 처리) · 201 Created(POST로 리소스 생성됨) · 204 No Content(성공했지만 본문 없음, DELETE 응답에 흔함)

3xx: 301 Moved Permanently(영구 이동) · 302 Found(임시 이동, 원래 URI를 계속 기준으로 삼아야 함) · 304 Not Modified(캐시가 아직 유효)

4xx: 400 Bad Request(요청 문법·파라미터 자체가 잘못됨) · 401 Unauthorized(인증 안 됨) · 403 Forbidden(인증은 됐지만 권한 없음) · 404 Not Found(리소스 없음) · 405 Method Not Allowed(그 메서드는 지원 안 함)

5xx: 500 Internal Server Error(서버 내부 원인 불명 오류) · 502 Bad Gateway(프록시가 백엔드로부터 잘못된 응답을 받음) · 503 Service Unavailable(서버가 일시적으로 요청을 못 받는 상태) · 504 Gateway Timeout(프록시가 백엔드 응답을 제 시간에 못 받음)

헷갈리는 짝 구분하기

401 vs 403: 401은 “누군지 모르겠다”(인증 실패), 403은 “누군지는 알겠는데 이건 못 준다”(인가 실패)다. 로그인 자체가 안 됐으면 401, 로그인은 됐는데 권한이 없어 막히면 403이다.

301 vs 302: 301은 이후로 새 URI를 기준 삼아도 되는 영구 이동, 302는 이번만 다른 곳을 보라는 임시 이동이라 원래 URI를 계속 써야 한다.

502 vs 503 vs 504: 셋 다 프록시·게이트웨이 뒤에서 나지만 원인 지점이 다르다. 502는 백엔드가 이상한 응답을 줬을 때, 503은 서버가 요청을 받을 형편이 안 될 때, 504는 백엔드 응답을 시간 안에 못 받았을 때다.

시험에 자주 나오는 포인트

첫 자리만 보고 클래스를 맞히는 문제가 기본형이다. 상황에 맞는 코드를 고르는 문제에서는 400·401·403·404가 자주 헷갈리는 조합으로 나온다. 4xx와 5xx를 가르는 기준은 원인이 요청을 보낸 쪽에 있는지 받은 쪽에 있는지이며, 301과 302의 의미 차이(영구 vs 임시)를 묻는 문제도 반복 출제된다.

댓글

이 글에 대한 의견은 아래 댓글로 남겨주세요 (GitHub 계정 필요). 로그인 없이 남기고 싶다면