본문 바로가기

WEB&서버

[HTTP Status] 429 Too Many Requests

https://developer.mozilla.org/ko/docs/Web/HTTP/Status/429

 

429 Too Many Requests - HTTP | MDN

HTTP 429 Too Many Requests 응답 상태 코드는 사용자가 주어진 시간 동안 너무 많은 요청을 보냈음을 나타냅니다("속도 제한").

developer.mozilla.org

  429 상태 코드는 사용자가 서버에 대해 일정 기간 내에 너무 많은 요청을 보냈음을 의미한다.

 특정 웹사이트로부터 데이터를 전부 긁어오는 크롤링 코드처럼 짧은 시간에 많은 요청을 보내면 서버에 높은 부하가 걸린다. 서버는 이 상황에서 429 에러를 반환하여 사용자에게 요청을 적당히 보내라는 의미를 전달할 수 있다. 따라서 429 상태 코드가 반환되었다면, 일정 시간을 대기한 후 요청을 보내야 한다.

Retry-After

 Retry-After은 서버 측에서 429 상태 코드와 함께 전달하는 응답 헤더로, 사용자가 다시 요청을 보내기 전에 얼마나 대기해야 하는지에 대한 정보를 담고 있다. 429 이외에도 503(service unavailable), 301(moved permanently)와 사용된다.

Retry-After: <http-date>
Retry-After: <delay-seconds>

# 예시

Retry-After: Wed, 21 Oct 2015 07:28:00 GMT
Retry-After: 120
  • 날짜: 재시도 할 날짜
  • 숫자: 응답을 받은 후 지연 시간(초)

 Retry-After 헤더가 명시되어 있다면 정확히 얼마나 대기해야 하는지 알 수 있어 요청을 처리하기 편하다. 다만 서버에서 현재 헤더를 반환할지 말지는 서버 구현에 따라 달라지므로, 경우에 따라 429 에러가 발생하더라도 정확히 얼마나 대기해야 하는지 모를 수 있다. 이 경우 말 그대로 "적당한" 시간을 대기하는 방법 정도밖에 없는 것 같다.

'WEB&서버' 카테고리의 다른 글

HTTP HATEOAS  (0) 2024.03.20
[WEB] REST & REST API  (0) 2024.03.14
[WEB] XPath로 SVG 요소 식별하기  (0) 2023.07.30
[WEB] XPath axes  (0) 2023.07.30
[WEB] XPath  (0) 2023.07.30