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.