Partilhar via


Problemas de limitação de solicitação e HTTP 403 - Problemas proibidos

Referindo-se ao artigo sobre a Série de Solução de Problemas do Gerenciamento de API do Azure, este é o quinto cenário do laboratório. Certifique-se de ter seguido as instruções de configuração do laboratório de acordo com isso, para recriar o problema.

Versão original do produto: Serviço de Gerenciamento de API
Número original do KB: 4464928

Sintomas

A API de recursos busca detalhes pessoais do usuário, postagens de mídia social, comentários e fotos e utiliza a resposta retornada para um projeto de aprendizado de máquina. Estranhamente, após alguns dias de uso, a operação GetPosts começou a lançar o erro HTTP 403 - Proibido , enquanto as outras operações estão funcionando bem conforme o esperado.

{
"código de status": 403,
"message": "Proibido"
}

Além do acima, também estamos encontrando HTTP 429 - Erro de muitas solicitações ao invocar a operação GetComments para cada segunda solicitação. O problema é resolvido automaticamente após 10 segundos, no entanto, ocorre novamente quando a primeira chamada para a API é feita novamente. O comportamento não é observado para as outras operações.

{
"statusCode": 429,
"message": "O limite de taxa foi excedido. Tente novamente em 5 segundos."
}

Etapas para solucionar problemas

  • O erro HTTP 403 – Proibido pode ser gerado quando há qualquer política de restrição de acesso implementada.

  • Verifique o rastreamento do inspetor do APIM; você deverá ver a existência de uma política de "filtro ip" que filtra (permite/nega) chamadas de endereços IP específicos e/ou intervalos de endereços.

  • Para verificar o escopo da política 'ip-filter', selecione o botão Calcular política efetiva. Se você não vir nenhuma política de restrição de acesso implementada em nenhum escopo, a próxima etapa de validação deverá ser feita no nível do produto, navegando até o produto associado e clicando na opção Políticas.

    <inbound>
        <base />
        <choose>
            <when condition="@(context.Operation.Name.Equals("GetPosts"))">
                <ip-filter action="forbid">
                    <address-range from="0.0.0.0" to="255.255.255.255" />
                </ip-filter>
            </when>
        </choose>
    </inbound>
    
  • Para o segundo problema (HTTP 429 - Muitas solicitações), seguiremos o mesmo procedimento verificando o rastreamento do inspetor do APIM e verificando se há alguma política de 'limite de taxa' ou 'limite de taxa por chave' implementada em qualquer escopo.

  • Se você calcular a política efetiva, deverá observar uma política de restrição de acesso (limite de taxa por chave) implementada no escopo global, ou seja, em 'Processamento de entrada' na opção 'Todas as APIs'.

    <inbound>
        <choose>
            <when condition="@(context.Operation.Name.Equals("GetComments"))">
                <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" />
            </when>
        </choose>
    </inbound>
    

Leia mais sobre as políticas de filtro de ip e limite de taxa por chave no APIM.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.