Partager via


Problèmes de limitation des requêtes et HTTP 403 - Problèmes interdits

En se référant à l’article sur la série de résolution des problèmes Azure Gestion des API, il s’agit du cinquième scénario du labo. Vérifiez que vous avez suivi les instructions de configuration du labo pour recréer le problème.

Version du produit d’origine : Gestion des API Service
Numéro de la base de connaissances d’origine : 4464928

Symptômes

L’API Ressources récupère les détails personnels de l’utilisateur, les publications sur les réseaux sociaux, les commentaires et les photos, et utilise la réponse retournée pour un projet Machine Learning. Étrangement, après quelques jours d’utilisation, l’opération GetPosts a commencé à lever l’erreur HTTP 403 - Interdit alors que les autres opérations fonctionnent correctement comme prévu.

{
« statusCode » : 403,
« message » : « Interdit »
}

En dehors de ce qui précède, nous rencontrons également une erreur HTTP 429 - Trop de requêtes lors de l’appel de l’opération GetComments pour une requête sur deux. Le problème est résolu automatiquement après 10 secondes, mais il se reproduit une fois que le premier appel à l’API est à nouveau effectué. Le comportement n’est pas observé pour les autres opérations.

{
« statusCode » : 429,
« message » : « La limite de débit est dépassée. Réessayez dans 5 secondes.
}

Étapes de résolution des problèmes

  • HTTP 403 - L’erreur Interdit peut être levée lorsqu’une stratégie de restriction d’accès est implémentée.

  • Vérifiez la trace de l’inspecteur APIM et vous devez remarquer l’existence d’une stratégie « ip-filter » qui filtre (autorise/refuse) les appels à partir d’adresses IP et/ou de plages d’adresses spécifiques.

  • Pour case activée l’étendue de la stratégie « ip-filter », sélectionnez le bouton Calculer la stratégie effective. Si vous ne voyez aucune stratégie de restriction d’accès implémentée dans des étendues, l’étape de validation suivante doit être effectuée au niveau du produit, en accédant au produit associé, puis en cliquant sur l’option Stratégies.

    <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>
    
  • Pour le deuxième problème (HTTP 429 - Trop de requêtes), nous allons suivre la même procédure en vérifiant la trace de l’inspecteur APIM et en case activée s’il existe une stratégie « limite de débit » ou « limite de débit par clé » implémentée dans n’importe quelle étendue.

  • Si vous calculez la stratégie effective, vous devez remarquer une stratégie de restriction d’accès (limite de débit par clé) implémentée dans l’étendue globale, c’est-à-dire sous « Traitement entrant » dans l’option « Toutes les API ».

    <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>
    

En savoir plus sur les stratégies de filtrage ip et de limite de débit par clé dans APIM.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.