Probleme mit der Anforderungsdrosselung und HTTP 403 – Unzulässige Probleme
Gemäß dem Artikel zur Azure API Management-Problembehandlungsreihe ist dies das fünfte Szenario des Labs. Stellen Sie sicher, dass Sie die Anweisungen zum Einrichten des Labs wie folgt befolgt haben, um das Problem neu zu erstellen.
Ursprüngliche Produktversion: API Management Service
Ursprüngliche KB-Nummer: 4464928
Problembeschreibung
Die Ressourcen-API ruft persönliche Daten, Beiträge, Kommentare und Fotos des Benutzers in sozialen Medien ab und verwendet die zurückgegebene Antwort für ein Machine Learning-Projekt. Seltsamerweise löste der GetPosts-Vorgang nach einigen Tagen der Verwendung den Fehler HTTP 403 – Verboten aus, während die anderen Vorgänge wie erwartet funktionieren.
{
"statusCode": 403,
"message": "Forbidden"
}
Abgesehen von den oben genannten, tritt auch der Fehler HTTP 429 – Zu viele Anforderungen beim Aufrufen des GetComments-Vorgangs für jede zweite Anforderung auf. Das Problem wird nach 10 Sekunden automatisch behoben, es tritt jedoch wieder auf, sobald der erste Aufruf der API erneut erfolgt. Das Verhalten wird für die anderen Vorgänge nicht beobachtet.
{
"statusCode": 429,
"message": "Ratenlimit wurde überschritten. Versuchen Sie es in 5 Sekunden erneut."
}
Schritte zur Problembehandlung
HTTP 403: Fehler "Verboten " kann ausgelöst werden, wenn eine Richtlinie für Zugriffseinschränkung implementiert ist.
Überprüfen Sie die Ablaufverfolgung des APIM-Inspektors , und Sie sollten feststellen, dass eine Ip-Filter-Richtlinie vorhanden ist, die Aufrufe von bestimmten IP-Adressen und/oder Adressbereichen filtert (zulässt/verweigert).
Um den Bereich der Richtlinie "ip-filter" zu überprüfen, wählen Sie die Schaltfläche Effektive Richtlinie berechnen aus. Wenn keine Zugriffseinschränkungsrichtlinie in einem Bereich implementiert ist, sollte der nächste Validierungsschritt auf Produktebene ausgeführt werden, indem Sie zum zugeordneten Produkt navigieren und dann auf die Option Richtlinien klicken.
<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>
Für das zweite Problem (HTTP 429 – Zu viele Anforderungen) führen wir das gleiche Verfahren aus, indem wir die APIM-Inspektor-Ablaufverfolgung überprüfen und überprüfen, ob eine Richtlinie "ratenlimit" oder "ratenlimit-by-key" in einem beliebigen Bereich implementiert ist.
Wenn Sie die effektive Richtlinie berechnen, sollten Sie feststellen, dass eine Zugriffsbeschränkungsrichtlinie (Ratenbegrenzung nach Schlüssel) im globalen Bereich implementiert ist, d. h. unter "Eingehende Verarbeitung" in der Option "Alle 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>
Erfahren Sie mehr über ip-filter- und rate-limit-by-key-Richtlinien in APIM.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.