13

가끔 리소스가 너무 자주 요청되는 경우 보안 문자로 HTML 리소스의 표시를 가로 채고 있습니다. 차단으로 인해 방향 전환이 발생하지 않습니다. 그것은 모두 동일한 URI에서 발생합니다.보안 문자에 대한 HTTP 상태 코드

나는 상태 코드는 이러한 요구 사항에 가장 맞는 것이다 HTTP 지금 궁금하네요 :

  • 는 의미에 맞게해야한다.

  • Google은이 차단이 색인의 기존 자원에 영향을 미치지 않는 임시 조건임을 이해해야합니다.

  • 웹 브라우저에 captcha가 포함 된 응답 본문이 표시됩니다.

    409 Conflict

    요청이 자원의 현재 상태와 충돌로 인해 완료 할 수 없습니다 :

이 내가 지금까지 확인 된 내 후보입니다. 이 코드는 사용자가 충돌을 해결하고 요청을 다시 제출할 수있는 경우에만 허용됩니다. 응답 본문은 사용자가 충돌의 원인을 인식 할 수있는 충분한 정보를 포함해야한다 (SHOULD).

이것은 완벽하게 들립니다. 충돌 상태는 리소스를 너무 자주 요청하는 클라이언트에서 발생합니다. 또한 대응에는 갈등 요인을 파악하고 해결할 수있는 충분한 정보가 포함됩니다.

503 Service Unavailable

서버

인해 서버의 임시 오버로딩 [...]으로 현재 요구를 처리 할 수 ​​없다. 이것은 임시 조건 [...]이라는 것을 의미합니다. 알고있는 경우 지연의 길이는 Retry-After 헤더에 표시 될 수있다.

적당히 들립니다. 지연의 길이를 알고 그러한 헤더를 제공 할 수도 있습니다. 하지만 여기서 사용자가 문제를 해결할 수있는 지점이 누락되었습니다. 또한 범위가 너무 광범위합니다 (오버로드 된 서버 대 오버로드 된 리소스).

답변

7

http://tools.ietf.org/html/rfc6585#section-4에 정의 된 상태 코드 429를 고려할 수 있습니다.

+0

401이 적절한 응답이라고 생각했습니다. Captcha는 사용자 에이전트의 컨트롤러의 인성을 인증하기위한 인증 형식입니다. WWW-Authenticate 헤더에서 무엇을 제공해야하는지 살펴 보았습니다.하지만 WWW-Authenticate : X-Captcha – John

+0

글쎄, 401은 정의 된 인증 체계의 존재를 의미합니다. –

+1

RFC는 챌린지가 필요하지만 모든 사용자 에이전트가 챌린지를 이해할 것을 요구하지는 않습니다. 이 예제는 표준에없는 체계에 대한 도전이므로 응용 프로그램이 체계를 사용할 수 있다면 그것을 소개하는 것이 합리적이라고 믿습니다. 내가 429에 대한 사양을 읽을 때, 그것은 클라이언트가 요청을 만드는 것으로되어있는 것 같습니다. 원하는 동작이 아닙니다. 우리는 클라이언트가 인증 후 요청을 다시 제출하기를 원합니다. 너무 많은 요청이있을 때 Youtube는 402를 사용하지만 현재 상태는 나중에 사용할 수 있도록 예약되어 있습니다. – John