[개념]

  • 클라이언트 요청에 따른 서버의 return 코드
  • RFC2616 (1999년), RFC7230~7235(2014년) 정의
  • 클라이언트(브라우저)가 수신할 상태 코드의 의미에 따라 요청 처리 로직, 응답 본문 구성, 캐싱 정책, 리다이렉션 처리, 에러 핸들링 등을 명확히 정의할 수 있음
  • 서버 아키텍처와 API 설계에서 일관된 동작 지침을 수립할 수 있음

 

HTTP Status Code

1xx (Informational) – 요청 진행 중

2xx (Success) – 성공

3xx (Redirection) – 리다이렉션

4xx (Client Error) – 클라이언트 잘못

코드 설명 예시 상황
400 Bad Request 잘못된 요청 잘못된 JSON
401 Unauthorized 인증 필요 로그인 필요
402 Payment Required (예약됨) 결제 필요 (미사용)  
403 Forbidden 권한 없음 관리자 페이지 접근 차단
404 Not Found 리소스 없음 없는 페이지 요청
405 Method Not Allowed 지원 안 하는 메서드 POST /status 허용 안 함
406 Not Acceptable 요청한 응답 형식 불가 Accept: application/xml인데 XML 미지원
407 Proxy Authentication Required 프록시 인증 필요  
408 Request Timeout 요청 시간 초과 클라이언트 응답 없음
409 Conflict 자원 충돌 동시에 같은 파일 수정
410 Gone 리소스 영구 삭제됨 삭제된 게시글
411 Length Required Content-Length 헤더 필요  
412 Precondition Failed 조건 헤더 불일치 If-Match 실패
413 Payload Too Large 요청 본문이 너무 큼 업로드 용량 초과
414 URI Too Long URL이 너무 김  
415 Unsupported Media Type 지원하지 않는 타입 Content-Type: text/csv 미지원
416 Range Not Satisfiable 요청한 범위 불가능  
417 Expectation Failed Expect 헤더 조건 불일치  
418 I’m a teapot (개그 코드) 에이프릴 풀 RFC   
421 Misdirected Request 잘못된 서버로 요청 전달  
422 Unprocessable Entity (WebDAV) 의미적 오류 JSON 필드 유효성 실패
423 Locked (WebDAV) 리소스 잠김  
424 Failed Dependency (WebDAV) 의존 요청 실패  
425 Too Early 너무 이른 재시도 방지  
426 Upgrade Required 프로토콜 업그레이드 필요  
428 Precondition Required 조건부 요청 필요  
429 Too Many Requests 요청 과다 (Rate limit)  
431 Request Header Fields Too Large 헤더 너무 큼  
451 Unavailable For Legal Reasons 법적 이유로 차단됨 DMCA, 정부 검열

 

5xx (Server Error) – 서버 잘못

코드 설명 예시 상황
500 Internal Server Error 서버 내부 오류 NullPointerException
501 Not Implemented 미구현 기능 지원 안 하는 메서드
502 Bad Gateway 게이트웨이/프록시 오류 Nginx → 백엔드 다운
503 Service Unavailable 서버 과부하/점검 중 트래픽 폭주
504 Gateway Timeout 게이트웨이 응답 시간 초과  
505 HTTP Version Not Supported 지원 안 하는 HTTP 버전  
506 Variant Also Negotiates 협상 오류  
507 Insufficient Storage (WebDAV) 저장 공간 부족  
508 Loop Detected (WebDAV) 무한 루프 감지  
510 Not Extended 추가 확장 필요  
511 Network Authentication Required 네트워크 인증 필요 호텔 와이파이 로그인 페이지

 

  • 500: 서버 자체 오류
  • 502: 프록시/게이트웨이가 백엔드 잘못된 응답 받음
  • 503: 서버/백엔드 일시적으로 요청 처리 불가(과부하 등)
  • 504: 백엔드 지연 → 타임아웃

 

📌 잘 안 쓰이는 HTTP Status Code의 공통적 이유

  1. 구식 표준 → 초기 HTTP/1.0~1.1에서 정의됐지만 현대 웹/REST API에서는 의미가 맞지 않음 (: 305, 306).
  2. 특수한 프로토콜 전용 → WebDAV 등 제한적 환경에서만 필요 (207, 422, 507 ).
  3. 클라이언트/브라우저 지원 부족 → 대부분의 브라우저, 프록시, API 클라이언트가 무시함 (205, 417, 103).
  4. 실무 대체 코드 존재 → 의미가 겹치거나 유사한 더 단순한 코드로 대체됨 (: 402 대신 403, 451 대신 403).
  5. 운영상 불편 → 코드가 너무 세분화되어 오히려 에러 처리/모니터링 복잡성 증가 (: 203, 406).
  6. 실제 적용 사례 부족 → 결제, 법적 제한 등 특정 도메인에서만 쓰이도록 정의됐으나 표준화된 사용례가 없음 (402, 451).
  7. 보안 문제 → 사용하면 공격에 악용될 가능성이 있어 폐기되거나 권장 안 됨 (305 Use Proxy).
  8. 실무에서 굳이 필요 없음 → REST API, 웹 애플리케이션 운영에 있어 반드시 구분할 필요가 없음 (: 409/422/424 중 하나만으로 충분).

 

 

 

 

 

 

 

 

문제 1

사용자가 상품 결제를 시도했다.

  • 요청 경로: 클라이언트 → 프록시 → 백엔드 결제 API → DB
  • DB 연결은 정상, 백엔드 로직에서 NullPointerException 발생
  • 프록시는 오류를 감지하고 클라이언트에 전달

클라이언트가 받을 상태 코드는?

A. 500 Internal Server Error
B. 502 Bad Gateway
C. 503 Service Unavailable
D. 504 Gateway Timeout
E. 200 OK

 정답

정답 : A

  • 서버(백엔드)가 자체 로직 오류로 요청을 처리할 수 없음
  • 클라이언트는 500 상태 코드로 오류 확인

 

 

문제2.

사용자가 동영상 스트리밍을 요청했다.

  • 요청 경로: 클라이언트 → Nginx 프록시 → 백엔드 미디어 서버 → CDN
  • 미디어 서버가 순간 과부하로 요청을 처리할 수 없는 상태
  • 프록시는 백엔드가 일시적으로 처리 불가하다는 것을 감지

클라이언트가 받을 상태 코드는?

A. 500 Internal Server Error
B. 502 Bad Gateway
C. 503 Service Unavailable
D. 504 Gateway Timeout
E. 408 Request Timeout

 정답

정답 : C

  • 백엔드가 일시적으로 요청을 처리할 수 없음 → 503
  • 502가 아닌 이유: 백엔드가 잘못된 응답을 준 것이 아니라 요청 처리 불가

 

 

 

문제 3

사용자가 로그인 후 프로필 조회를 시도했다.

  • 요청 경로: 클라이언트 → 프록시 → 백엔드 인증 서버
  • 백엔드는 정상적으로 200 OK를 반환했지만, 응답 헤더가 잘못 구성되어 프록시에서 정규화 실패
  • 클라이언트는 정상 데이터 대신 에러 페이지를 받음

클라이언트가 받을 상태 코드는?

A. 500 Internal Server Error
B. 502 Bad Gateway
C. 503 Service Unavailable
D. 504 Gateway Timeout
E. 200 OK

 정답

정답 : B

  • 프록시는 정상인데, 백엔드 응답이 규격에 맞지 않아 처리 실패
  • 클라이언트 입장에서 게이트웨이 오류 → 502

+ Recent posts