Problemas de limitação de solicitação e HTTP 403 – Problemas proibidos
Referindo-se ao artigo sobre o Azure Gerenciamento de API Série de Solução de Problemas, este é o quinto cenário do laboratório. Verifique se você seguiu as instruções de instalação do laboratório de acordo com isso, para recriar o problema.
Versão original do produto: Gerenciamento de API Service
Número de KB original: 4464928
Sintomas
A API de Recursos busca os detalhes pessoais do usuário, postagens nas redes sociais, comentários e fotos e utiliza a resposta retornada para um projeto de machine learning. Estranhamente, depois de alguns dias de uso, a operação GetPosts começou a lançar HTTP 403 – Erro proibido , enquanto as outras operações estão funcionando bem conforme o esperado.
{
"statusCode": 403,
"message": "Proibido"
}
Além do acima, também estamos encontrando o erro HTTP 429 – Muitas solicitações ao invocar a operação GetComments para cada segunda solicitação. O problema obtém automaticamente resolve após 10 segundos, no entanto, ele ocorre novamente quando a primeira chamada à API é feita novamente. O comportamento não é observado para as outras operações.
{
"statusCode": 429,
"message": "Limite de taxa é excedido. Tente novamente em 5 segundos."
}
Etapas para a solução de problemas
HTTP 403 – Erro proibido pode ser gerado quando há qualquer política de restrição de acesso implementada.
Verifique o rastreamento do inspetor APIM e você deve observar a existência de uma política de "filtro ip" que filtra chamadas (permite/nega) de endereços IP específicos e/ou intervalos de endereços.
Para marcar o escopo da política de "filtro ip", 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 clique 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 – Solicitações demais), seguiremos o mesmo procedimento verificando o rastreamento e o marcar do inspetor APIM se houver 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 políticas ip-filter e rate-limit-by-key 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.