Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zusammenfassung
In diesem Artikel wird erläutert, wie Sie HTTP 403- und HTTP 429-Fehler beheben, die durch Azure API Management Anforderungsdrosselungsrichtlinien verursacht werden, sodass Sie restriktive Richtlinien identifizieren und das erwartete API-Verhalten wiederherstellen können.
Dieser Artikel ist das fünfte Szenario des Azure API Management Problembehandlungs-Reihenlabors. Befolgen Sie unbedingt die Anweisungen zum Einrichten des Labs gemäß den Laboranweisungen der Reihe zur Problembehandlung für API Management.
Ursprüngliche Produktversion: API-Verwaltungsdienst
Ursprüngliche KB-Nummer: 4464928
Symptome
Die Ressourcen-API ruft die persönlichen Details, Beiträge in sozialen Netzwerken, Kommentare und Fotos eines Benutzers ab und verwendet die Antwort für ein Machine Learning-Projekt. Der GetPosts-Vorgang beginnt mit der Rückgabe von HTTP 403 – Verbotene Fehler, während die anderen Vorgänge wie erwartet funktionieren.
Das folgende Beispiel zeigt die Fehlermeldung, die vom GetPosts-Vorgang zurückgegeben wird:
"statusCode": 403,
"message": "Verboten"
Möglicherweise treten auch HTTP 429 - Zu viele Anfragen-Fehler auf, wenn Sie bei jeder zweiten Anfrage den Vorgang GetComments ausführen. Das Problem wird nach 10 Sekunden automatisch behoben. Es wird jedoch rekursiert, sobald der erste Aufruf der API erneut erfolgt. Dieses Verhalten tritt bei den anderen Vorgängen nicht auf.
Das folgende Beispiel zeigt die Fehlermeldung, die vom GetComments-Vorgang zurückgegeben wird:
"statusCode": 429,
"message": "Ratenbegrenzung überschritten." Versuchen Sie es in 5 Sekunden erneut."
Troubleshooting
HTTP 403 – Unzulässiger Fehler
Dieser Fehler tritt auf, wenn eine Zugriffseinschränkungsrichtlinie implementiert wird. Überprüfen Sie die Inspector-Ablaufverfolgung in API Management. Sie sollten feststellen, dass eine ip-filter Richtlinie vorhanden ist, die Anrufe aus bestimmten IP-Adressen und Adressbereichen filtert (zulässt oder verweigert), wie im folgenden Beispiel gezeigt:
<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>
Um den Gültigkeitsbereich der ip-filter Richtlinie zu überprüfen, wählen Sie " Effektive Richtlinie berechnen" aus. Wenn Sie in keinem Bereich eine Richtlinie zur Zugriffsbeschränkung sehen, prüfen Sie die Produktebene. Wechseln Sie zum zugehörigen Produkt, und wählen Sie dann "Richtlinien" aus.
HTTP 429 – Fehler bei zu vielen Anforderungen
Verwenden Sie dieselbe Vorgehensweise wie zuvor beschrieben, indem Sie die Inspector-Ablaufverfolgung in API Management prüfen, um festzustellen, ob in einem beliebigen Bereich eine rate-limit- oder rate-limit-by-key-Richtlinie implementiert ist.
Sie sollten eine im globalen Bereich implementierte Zugriffsbeschränkungsrichtlinie (rate-limit-by-key) bemerken, wie bei Inbound processing in der Option All APIs, wie im folgenden Beispiel gezeigt:
<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>
Weitere Informationen finden Sie unter API-Verwaltungsrichtlinienreferenz.