HTTP 429

IT 위키

HTTP 429 상태 코드는 "Too Many Requests"를 의미하며, 클라이언트가 일정 시간 동안 너무 많은 요청을 보내 서버가 이를 처리하지 않기 위해 응답하는 속도 제한(Rate Limiting) 관련 오류이다. 서버는 클라이언트에게 요청을 잠시 중단하고 이후에 다시 시도하라고 알린다.

개념[편집 | 원본 편집]

  • HTTP 429는 클라이언트가 서버가 허용한 요청 속도를 초과했을 때 발생
  • 과도한 API 요청, 폼 제출, 로그인 시도 등에서 서버 과부하나 남용 방지를 위해 사용
  • 클라이언트가 지정된 시간 이후에 재시도할 수 있도록 서버는 재시도 가능 시간을 응답 헤더에 명시할 수 있음

응답 예시[편집 | 원본 편집]

HTTP/1.1 429 Too Many Requests
Retry-After: 60
Content-Type: text/plain

You have sent too many requests. Please wait 60 seconds and try again.

주요 헤더[편집 | 원본 편집]

  • Retry-After
    • 클라이언트가 요청을 다시 시도할 수 있는 시간(초 단위 또는 날짜 형식)
    • 예: Retry-After: 120 또는 Retry-After: Wed, 01 Jan 2025 12:00:00 GMT

사용 사례[편집 | 원본 편집]

  • API 서비스에서 사용자별 요청 제한
  • 로그인 시도 제한 (브루트포스 공격 방지)
  • 스크레이핑 및 봇 활동 통제
  • 서비스 남용 방지

클라이언트 처리 방법[편집 | 원본 편집]

  • 응답 코드 429를 수신하면 재시도 로직을 구현해야 함
  • Retry-After 헤더가 있을 경우 해당 시간만큼 대기
  • 없을 경우 지수 백오프(exponential backoff) 등으로 재시도 간격을 늘려야 함

관련 보안[편집 | 원본 편집]

  • 429는 DoS(서비스 거부 공격) 완화 수단 중 하나로 활용 가능
  • CAPTCHA, 사용자 인증, IP 차단 등과 함께 사용되어 방어력 강화

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]