Wenn API-Anfragen über Apigee Edge gestellt werden, können die Apigee Edge-Komponenten Router und Nachrichtenprozessoren oder die Back-End-Server Fehler an die Clientanwendungen zurückgeben.
Fehler vom Message Processor
Der Message Processor ist die Kernkomponente von Apigee Edge, die die Richtlinien verarbeitet und mit den Back-End-Servern interagiert. Er kann Fehler zurückgeben, wenn folgende Probleme auftreten:
Probleme mit der Netzwerkverbindung, TLS-Handshake-Fehler, Nichtverfügbarkeit des Backend-Servers, fehlende Antwort während der Kommunikation mit dem Backend-Server
Fehler während der Ausführung der Richtlinie
Ungültige HTTP-Header, Codierung, Pfad, Nichteinhaltung von HTTP-Spezifikationen, Überschreitung von Produktlimits usw.:
Mit den von den Clientanwendungen gesendeten HTTP-Anfragen
ODER
Mit der vom Backend-Server gesendeten HTTP-Antwort
Und vieles mehr
Beispielfehler vom Message Processor
Der Message Processor gibt immer einen HTTP-Statuscode gefolgt von einer Fehlermeldung sowie einem Fehlercode im JSON-Format zurück, wie unten gezeigt:
Die Clientanwendung erhält einen Antwortcode wie im folgenden Beispiel:
HTTP/1.1 414 Request-URI Too Long
Eine Fehlermeldung des Message Processors wird im folgenden Format angezeigt:
Enthält die Fehlermeldung, die die mögliche Ursache für den Fehler beschreibt
errorcode
Fehlercode, der mit dem Fehler verknüpft ist
Laufzeitfehlerkatalog
Dieser Fehlerkatalog enthält alle Informationen, die Sie über die Laufzeitfehlercodes (für nicht richtlinienbasierte Fehler) wissen müssen, die von der Apigee Edge Message Processor-Komponente zurückgegeben werden. Sie enthält die folgenden Informationen zu den einzelnen Fehlercodes:
Playbooks und Videos, die Anleitungen zur Diagnose der Fehlerursache und effektive Lösungen enthalten, mit denen Sie den Fehler selbst beheben können (falls verfügbar)
Fehlerkorrektur, um den Fehler selbst zu beheben
Die folgenden Fehlercode-Kategorien werden behandelt:
Verwenden Sie das Feld Suchen unten, um die Tabelle so zu filtern, dass die obigen Informationen für einen bestimmten Fehlercode angezeigt werden. Sie können in jedem Feld der Tabelle nach dem Statuscode oder einem beliebigen Inhalt suchen.
searchSuche
Fehlercode
Beschreibung
Problembehebung
flow.*
flow.APITimedOut
HTTP-Statuscode:
504 Gateway Timeout
Fehlermeldung:
API timed out
Mögliche Ursache:
Dieser Fehler tritt in folgenden Fällen auf:
Der Backend-Server antwortet nicht innerhalb des Zeitlimits, das vom Attribut api.timeout für den jeweiligen API-Proxy konfiguriert wurde.
Eine Richtlinie dauert aufgrund rechenintensiver Vorgänge, hoher Last oder schlechter Leistung sehr lange.
Hinweis: Dieses Playbook enthält eine Anleitung zur Behebung des Fehlercodes messaging.adaptors.http.flow.GatewayTimeout. Sie können jedoch dasselbe Playbook für die Fehlerbehebung beim Fehlercode flow.APITimedOut verwenden.
Das Nutzlastformat, das vom Client als Teil der HTTP-Anfrage gesendet wird, stimmt nicht mit dem im Content-Encoding-Header angegebenen Codierungsformat überein
Die im HTTP-Antwortheader Content-Encoding des Back-End/Zielservers angegebene Codierung ist gültig und
wird von Apigee Edge unterstützt.
ABER
Das vom Backend-/Zielserver als Teil der HTTP-Antwort gesendete Nutzlastformat entspricht nicht dem im Header Content-Encoding angegebenen Codierungsformat
Die Fehlermeldung und das Format können je nach Implementierung des Backend-Servers variieren.
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Back-End-Server mit dem Statuscode 504 an Apigee Edge antwortet.
Hinweis: Der Fehlercode messaging.adaptors.http.flow.ErrorResponseCode wird nicht als Teil der Fehlermeldung zurückgegeben, die an die Clientanwendungen gesendet wird. Das liegt daran, dass dieser Fehlercode von Apigee Edge festgelegt wird, wenn der Back-End-Server mit einem Fehler und einem der Statuscodes 4XX oder 5XX antwortet. Sie können diesen Fehlercode im API-Monitoring, in NGINX-Zugriffslogs oder in einer Analysedatenbank aufrufen.
messaging.adaptors.http.flow.GatewayTimeout
HTTP-Statuscode:
504 Gateway Timeout
Fehlermeldung:
Gateway Timeout
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Back-End-Server nicht innerhalb des auf dem Message Processor konfigurierten
E/A-Zeitlimit auf den Apigee Edge-Nachrichtenprozessor antwortet.
Dieser Fehler tritt auf, wenn der Content-Length-Header nicht von der Clientanwendung als Teil der HTTP-Anfragen POST und PUT übergeben wird, die an Apigee Edge gesendet werden.
Hinweis: Die Anfragen, die wegen dieses Fehlers fehlschlagen, können mit dem Trace-Tool nicht erfasst werden, da der Message Processor diese Validierung in einer sehr frühen Phase durchführt, lange bevor die Anfrage verarbeitet und eine Richtlinie im API-Proxy ausgeführt wird.
Führen Sie folgende Schritte aus, um diesen Fehler zu beheben:
Achten Sie darauf, dass die Clientanwendung den Header Content-Length immer als Teil der HTTP-Anfragen POST und PUT übergibt, die an Apigee Edge gesendet werden. Beispiel:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
Auch wenn Sie eine leere Nutzlast mit POST- und PUT-Anfragen übergeben, müssen Sie darauf achten, dass der Header Content-Length: 0 übergeben wird. Beispiel:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
HTTP-Statuscode:
503 Service Unavailable
Fehlermeldung:
The Service is temporarily unavailable
Mögliche Ursache:
Dieser Fehler tritt in einem der folgenden Szenarien auf, wenn Sie
TargetServer in Apigee Edge verwenden:
Die falsche DNS-Auflösung des Backend-Serverhosts durch den benutzerdefinierten Autorisierungsserver hat zu fehlerhaften IP-Adressen geführt, die zu Verbindungsfehlern führt.
Zeitüberschreitungsfehler bei der Verbindung aufgrund von:
Firewalleinschränkungen auf dem Back-End-Server verhindern, dass Apigee Edge eine Verbindung zum Back-End-Server herstellt.
Netzwerkverbindungsprobleme zwischen Apigee Edge und dem Back-End-Server.
Der im TargetServer angegebene Host ist falsch oder enthält unerwünschte Zeichen (z. B. ein Leerzeichen).
Dieser Fehler tritt auf, wenn der Apigee Edge-Nachrichtenprozessor während des in der Message Processor-Komponente konfigurierten
E/A-Zeitlimits keine Nutzlast der Anfrage von der Clientanwendung empfängt.
Problembehebung
Achten Sie darauf, dass die Clientanwendung die Nutzlast der Anfrage innerhalb des
E/A-Zeitlimits sendet, das in der Message Processor-Komponente von Apigee Edge konfiguriert ist.
messaging.adaptors.http.flow.ServiceUnavailable
HTTP-Statuscode:
503 Service Unavailable
Fehlermeldung:
The Service is temporarily unavailable
Mögliche Ursache:
Dieser Fehler tritt in einem der folgenden Szenarien auf:
Die falsche DNS-Auflösung des Backend-Serverhosts durch den benutzerdefinierten Autorisierungsserver hat zu fehlerhaften IP-Adressen geführt, die zu Verbindungsfehlern führt.
Zeitüberschreitungsfehler bei der Verbindung aufgrund von:
Firewalleinschränkungen auf dem Back-End-Server verhindern, dass Apigee Edge eine Verbindung zum Back-End-Server herstellt.
Netzwerkverbindungsprobleme zwischen Apigee Edge und dem Back-End-Server.
Der im Zielendpunkt angegebene Zielserverhost ist falsch oder enthält unerwünschte Zeichen (z. B. Leerzeichen).
Dieser Fehler kann auch auftreten, wenn der Backend-Server die Verbindung vorzeitig beendet, während der Message Processor weiterhin die Anfragenutzlast an den Backend-Server sendet.
Dieser Fehler tritt während des SSL-Handshake-Prozesses zwischen dem Nachrichtenprozessor von Apigee Edge und dem Back-End-Server in folgenden Fällen auf:
Der Truststore des Message Processor von Apigee Edge:
Enthält eine Zertifikatskette, die nicht mit der vollständigen Zertifikatskette des Back-End-Servers übereinstimmt
ODER
Enthält nicht die vollständige Zertifikatskette des Back-End-Servers
The certificate chain presented by the backend server:
Enthält einen vollständig qualifizierten Domainnamen (FQDN), der nicht mit dem im Zielendpunkt angegebenen Hostnamen übereinstimmt
ODER
Enthält eine falsche/unvollständige Zertifikatskette
Dieser Fehler tritt auf, wenn Apigee Edge die Anfrage aus folgenden Gründen nicht an einen der TargetEndpunkte weiterleiten kann:
Es gibt keine Bedingung für eine Routingregel (<RouteRule>), die der Anfrage in einem Proxy entspricht
AND
Im ProxyEndpoint ist keine Standardroutingregel definiert, d. h. <RouteRule> ohne Bedingung
Korrigieren
So beheben Sie diesen Fehler:
Prüfen Sie die in Ihrem ProxyEndpoint definierten Routingregeln und ändern Sie sie, um sicherzustellen, dass mindestens eine Bedingung der Routingregel vorhanden ist, die Ihrer Anfrage entspricht.
Es empfiehlt sich, eine Standard-Routingregel ohne Bedingung zu definieren, wenn Sie mehrere RouteRules haben.
Achten Sie darauf, dass die Standard-Routingregel als letzte in der Liste der bedingten Routen definiert ist, da die Regeln im ProxyEndpoint von oben nach unten ausgewertet werden.
Weitere Informationen zum Definieren von <RouteRule>-Bedingungen in einem ProxyEndpoint finden Sie unter
Bedingte Ziele.
messaging.runtime.SenseRaiseFault
HTTP-Statuscode:
403 Forbidden
Fehlermeldung:
Sense Fault
Mögliche Ursache:
Dieser Fehler tritt auf, wenn eine API-Anfrage von einer bestimmten Client-IP-Adresse stammt, die als Teil der Apigee Sense-Regeln blockiert wird.
Wenn die spezifische Client-IP-Adresse nicht blockiert ist, dieser Fehler aber weiterhin angezeigt wird, wenden Sie sich an den Apigee Edge-Support.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
HTTP-Statuscode:
500 Internal Server Error
Fehlermeldung:
Bad Form Data
Mögliche Ursache:
Dieser Fehler tritt nur dann auf, wenn alle folgenden Bedingungen erfüllt sind:
Die vom Client an Apigee Edge gesendete HTTP-Anfrage enthält:
Content-Type: application/x-www-form-urlencoded, und
Formulardaten mit dem Prozentzeichen (%) oder dem Prozentzeichen (%), gefolgt von ungültigen Hexadezimalzeichen, die nicht gemäß der Formulare – Abschnitt 17.13.4.1 zulässig sind.
Der API-Proxy in Apigee Edge liest die spezifischen Formularparameter, die Zeichen enthalten, die im Anfrageablauf nicht mit ExtractVariables oder der Methode „AssignMessage“ zulässig sind.
Dieser Fehler tritt auf, wenn ein bestimmter HTTP-Header, der keine Duplikate in Apigee Edge haben darf, mehr als einmal mit denselben oder unterschiedlichen Werten als Teil der HTTP-Anfrage angezeigt wird, die von der Clientanwendung an Apigee Edge gesendet wird.
Achten Sie darauf, dass die von der Clientanwendung an Apigee Edge gesendete HTTP-Anfrage immer einen gültigen Header-Namen gemäß
RFC 7230, Abschnitt 3.2: Headerfelder enthält.
protocol.http.HeaderNameWithNonAsciiChar
HTTP-Statuscode:
400 Bad Request
Fehlermeldung:
Header {header_name} contains non ascii character {character}
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Headername, der als Teil der HTTP-Anfrage von der Clientanwendung an Apigee Edge gesendet wird, Nicht-ASCII-Zeichen enthält.
Header {header_name} contains invalid character {character}
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Headername, der als Teil der HTTP-Anfrage von der Clientanwendung an Apigee Edge gesendet wurde, ungültige Zeichen wie Gleichheitszeichen (=), Komma (,), Semikolon (;), Tab, CRLF und Zeilenvorschubzeichen enthält.
Achten Sie darauf, dass die von der Clientanwendung an Apigee Edge gesendete HTTP-Anfrage gemäß
RFC 7230, Abschnitt 3.2.6: Feldwertkomponenten keine ungültigen Zeichen in den Headernamen enthält.
protocol.http.InvalidPath
HTTP-Statuscode:
400 Bad Request
Fehlermeldung:
Invalid path {path}
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Pfad in der HTTP-Anfrage-URL, die von der Clientanwendung an Apigee Edge gesendet wurde, Zeichen enthält, die gemäß der Spezifikation RFC 3986, Abschnitt 3.3: Pfad nicht zulässig sind.
Achten Sie darauf, dass der Pfad in der HTTP-Anfrage-URL, die von der Clientanwendung an Apigee Edge gesendet wurde, keine Zeichen enthält, die gemäß
RFC 3986, Abschnitt 3.3: Pfad unzulässig sind.
protocol.http.TooBigBody
HTTP-Statuscode:
413 Request Entity Too Large
Fehlermeldung:
Body buffer overflow
Mögliche Ursache:
Dieser Fehler tritt auf, wenn die von der Clientanwendung als Teil der HTTP-Anfrage an Apigee Edge gesendete Nutzlastgröße die zulässige Größe in Apigee Edge überschreitet.
Die Gesamtgröße aller Anfrageheader, die von der Clientanwendung als Teil der HTTP-Anfrage an Apigee Edge gesendet werden, ist größer als das zulässige Limit in Apigee Edge.
Dieser Fehler tritt auf, wenn die Größe der Anfragezeile, die von der Clientanwendung als Teil der HTTP-Anfrage an Apigee Edge gesendet wird, das zulässige Limit in Apigee Edge überschreitet.
Dieser Fehler tritt auf, wenn der vom Client als Teil der HTTP-Antwort gesendete Header Content-Encoding ein Codierungs-/Nutzlastformat enthält, das
von Apigee Edge nicht unterstützt wird.
Dieser Fehler tritt auf, wenn die Anfrage-URL des Backend-Servers, die durch die Flussvariable target.url dargestellt wird, einen Pfad enthält, der mit einem Fragezeichen (?) anstelle eines Schrägstrichs (/) beginnt, was ungültig ist.
Dieser Fehler tritt auf, wenn der spezifische HTTP-Header, der keine Duplikate in Apigee Edge enthalten darf, mehr als einmal mit denselben oder unterschiedlichen Werten als Teil der HTTP-Antwort angezeigt wird, die vom Back-End-Server an Apigee Edge gesendet wird.
Achten Sie darauf, dass die vom Back-End-Server an Apigee Edge gesendete HTTP-Antwort immer einen gültigen Header-Namen gemäß
RFC 7230, Abschnitt 3.2: Headerfelder enthält.
protocol.http.EmptyPath
HTTP-Statuscode:
500 Internal Server Error
Fehlermeldung:
Request path cannot be empty
Mögliche Ursache:
Dieser Fehler tritt auf, wenn die HTTP-Anfrage-URL des Backend-Servers, dargestellt durch die Ablaufvariable target.url, einen leeren Pfad enthält.
Header {header_name} contains non ascii character {character}
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Header-Name, der vom Backend-Server als Teil der HTTP-Antwort an Apigee Edge gesendet wurde, Nicht-ASCII-Zeichen enthält.
Achten Sie darauf, dass die an Apigee Edge gesendete HTTP-Antwort des Back-End-Servers gemäß
RFC 7230, Abschnitt 3.2.6: Feldwertkomponenten keine Nicht-ASCII-Zeichen in Headernamen enthält.
protocol.http.HeaderWithInvalidChar
HTTP-Statuscode:
502 Bad Gateway
Fehlermeldung:
Header {header_name} contains invalid character {character}
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Headername, der vom Backend-Server als Teil der HTTP-Antwort gesendet wurde, ungültige Zeichen wie Gleich (=), Komma (,), Semikolon (;), Tab, CRLF und einen Zeilenumbruch enthält.
Achten Sie darauf, dass die an Apigee Edge gesendete HTTP-Antwort des Back-End-Servers gemäß
RFC 7230, Abschnitt 3.2.6: Feldwertkomponenten keine ungültigen Zeichen in den Headernamen enthält.
protocol.http.ProxyTunnelCreationFailed
HTTP-Statuscode:
503 Service Unavailable
Fehlermeldung:
Proxy refused to create tunnel with response status {status code}
Mögliche Ursache:
Dieser Fehler tritt während der Erstellung des Tunnels zwischen Apigee Edge und dem Back-End-Server durch den Proxyserver aufgrund von Firewall, ACL (Access Control List), DNS-Problemen, Verfügbarkeit des Back-End-Servers usw. auf.
Hinweis: Der Statuscode in der Fehlermeldung (faultstring) stellt die allgemeine Ursache des Problems dar.
Response Status code 306 is reserved, so can't be used.
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Back-End-Server mit dem Statuscode 306 an Apigee Edge geantwortet hat.
Der Statuscode 306 wurde in einer früheren Version der HTTP-Spezifikation definiert. Gemäß der aktuellen HTTP-Spezifikation ist dieser Code reserviert und sollte nicht verwendet werden.
Da der Statuscode 306 reserviert ist, achten Sie darauf, dass Ihr Back-End-Server diesen Statuscode beim Senden einer Antwort an Apigee Edge nicht verwendet.
protocol.http.Response405WithoutAllowHeader
HTTP-Statuscode:
502 Bad Gateway
Fehlermeldung:
Received 405 Response without Allow Header
Mögliche Ursache:
Der Backend-Server antwortet mit dem Statuscode 405 Method Not Allowed ohne den Header „Allow”.
Dieser Fehler tritt auf, wenn die HTTP-Antwort vom Back-End-Server an Apigee Edge entweder 204 No Content oder 205 Reset Content ist, aber den Antworttext und/oder einen oder mehrere der folgenden Header enthält:
Dieser Fehler tritt auf, wenn die von der Clientanwendung als Teil der HTTP-Anfrage an Apigee Edge gesendete Nutzlastgröße die zulässige Größe in Apigee Edge überschreitet.
Dieser Fehler tritt auf, wenn die Gesamtgröße aller Antwortheader, die vom Back-End-Server als Teil der HTTP-Antwort an Apigee Edge gesendet wurden, das zulässige Limit in Apigee Edge überschreitet.
Dieser Fehler tritt auf, wenn die Größe der Antwortzeile, die vom Back-End-Server als Teil der HTTP-Antwort an Apigee Edge gesendet wurde, die in Apigee Edge zulässige Grenze überschreitet.
Dieser Fehler tritt auf, wenn der vom Back-End-Server als Teil der HTTP-Antwort gesendete Content-Encoding-Header das Codierungs-/Nutzlastformat enthält, das
von Apigee Edge nicht unterstützt wird.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der spezifische KeyAlias, auf den im TargetEndpoint oder TargetServer verwiesen wird, nicht im spezifischen Keystore gefunden wird.
Problembehebung
Achten Sie darauf, dass der im TargetEndpoint oder TargetServer angegebene KeyAlias vorhanden ist und Teil des spezifischen Keystores ist.
security.util.TrustStoreWithNoCertificates
HTTP-Statuscode:
500 Internal Server Error
Fehlermeldung:
TrustStore {truststore_name} has no certificates
Mögliche Ursache:
Dieser Fehler tritt auf, wenn der Truststore, auf den im TargetEndpoint oder TargetServer verwiesen wird, keine Zertifikate enthält.
Korrigieren
Wenn Sie das Zertifikat des Backend-Servers validieren und den Truststore in einem TargetEndpoint oder TargetServer verwenden möchten, prüfen Sie, ob der Truststore die gültigen Zertifikate des Backend-Servers enthält.