Delen via


Aanvraagbeperkingsproblemen en HTTP 403 - Verboden problemen

Dit is het vijfde scenario van het lab, wat verwijst naar het artikel over azure API Management Troubleshooting Series. Zorg ervoor dat u de instructies voor het instellen van het lab hebt gevolgd om het probleem opnieuw te maken.

Oorspronkelijke productversie: API Management Service
Oorspronkelijk KB-nummer: 4464928

Symptomen

De Resources-API haalt de persoonlijke gegevens van de gebruiker, berichten op sociale media, opmerkingen en foto's op en maakt gebruik van het antwoord dat wordt geretourneerd voor een machine learning-project. Vreemd genoeg na enkele dagen na het gebruik van de GetPosts-bewerking begint de HTTP 403 - Verboden-fout te genereren, terwijl de andere bewerkingen naar behoren werken.

{
"statusCode": 403,
"bericht": "Verboden"
}

Naast het bovenstaande krijgen we ook te maken met http 429- te veel aanvragen tijdens het aanroepen van getcomments-bewerking voor elke tweede aanvraag. Het probleem wordt automatisch opgelost na 10 sec. Het probleem wordt echter opnieuw uitgevoerd zodra de eerste aanroep naar de API opnieuw wordt uitgevoerd. Het gedrag wordt niet waargenomen voor de andere bewerkingen.

{
"statusCode": 429,
"bericht": "Frequentielimiet is overschreden. Probeer het over 5 seconden opnieuw.
}

Stappen voor probleemoplossing

  • HTTP 403: de fout Verboden kan worden gegenereerd wanneer er een toegangsbeperkingsbeleid is geïmplementeerd.

  • Controleer de APIM Inspector-tracering en u ziet dat er een ip-filterbeleid bestaat dat aanroepen van specifieke IP-adressen en/of adresbereiken filtert (toestaat/weigert).

  • Als u het bereik van het ip-filterbeleid wilt controleren, selecteert u de knop Effectief beleid berekenen. Als u geen toegangsbeperkingsbeleid ziet dat is geïmplementeerd in bereiken, moet u de volgende validatiestap uitvoeren op productniveau door naar het bijbehorende product te navigeren en vervolgens op de optie Beleid te klikken.

    <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>
    
  • Voor het tweede probleem (HTTP 429 - Te veel aanvragen) volgen we dezelfde procedure door de APIM-controletracering te controleren en te controleren of er beleid 'rate-limit' of 'rate-limit-by-key' is geïmplementeerd in elk bereik.

  • Als u het effectieve beleid berekent, ziet u een toegangsbeperkingsbeleid (rate-limit-by-key) dat is geïmplementeerd op globaal bereik, bijvoorbeeld onder 'Binnenkomende verwerking' in de optie Alle API's.

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

Lees meer over ip-filter - en rate-limit-by-key-beleid in APIM.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.