Quando le richieste API vengono effettuate tramite Apigee Edge, i router e i processori di messaggi dei componenti Apigee Edge oppure i server di backend possono restituire errori alle applicazioni client.
Errori dal processore di messaggi
Il processore di messaggi è il componente principale di Apigee Edge che elabora i criteri e
interagisce con i server di backend. Può restituire errori se rileva problemi come:
Problemi di connettività di rete, errori di handshake TLS, indisponibilità del server di backend, mancanza di risposta durante la comunicazione con il server di backend
Errori durante l'esecuzione del criterio
Intestazioni, codifica, percorso HTTP non validi, mancata osservanza delle specifiche HTTP, superamento dei limiti del prodotto e così via:
Con la richiesta HTTP inviata dalle applicazioni client
OPPURE
Con la risposta HTTP inviata dal server di backend
E molti altri ancora
Esempio di errore del processore di messaggi
Il processore di messaggi restituisce sempre un codice di stato HTTP seguito da un messaggio di errore insieme a un codice di errore in formato JSON, come mostrato di seguito:
L'applicazione client riceve un codice di risposta simile all'esempio seguente:
HTTP/1.1 414 Request-URI Too Long
Una risposta di errore dal processore di messaggi viene visualizzata nel seguente formato:
Contiene il messaggio che descrive la possibile causa dell'errore
errorcode
Codice di errore (chiamato anche codice di errore) associato all'errore
Catalogo degli errori di runtime
Questo catalogo degli errori fornisce tutte le informazioni necessarie sui codici di errore di runtime (per gli errori non relativi ai criteri) che vengono restituiti dal componente Processore di messaggi Apigee Edge. Include le seguenti informazioni per ciascuno dei codici di errore:
Codice di stato HTTP
Messaggio di errore
Possibili cause dell'errore
Eventuali specifiche HTTP e/o limiti di prodotto associati
Guide pratiche e video contenenti istruzioni per diagnosticare la causa dell'errore e soluzioni efficaci che puoi applicare per risolverlo autonomamente (se disponibili)
Soluzione che puoi applicare per risolvere autonomamente l'errore
Vengono trattate le seguenti categorie di codici di errore:
Utilizza la casella Cerca di seguito per filtrare la tabella in modo da visualizzare le informazioni precedenti per un codice di errore specifico. Puoi cercare il codice di stato o qualsiasi contenuto in qualsiasi campo della tabella.
searchRete di ricerca
Codice di errore
Descrizione
Correggi
flow.*
flow.APITimedOut
Codice di stato HTTP:
504 Gateway Timeout
Messaggio di errore:
API timed out
Possibile causa:
Questo errore si verifica se:
Il server di backend non risponde entro il periodo di timeout configurato dalla proprietà api.timeout per il proxy API specifico.
Un criterio richiede molto tempo a causa di operazioni ad alta intensità di calcolo, carico elevato o prestazioni scarse.
Nota: questo playbook fornisce istruzioni per risolvere il codice di errore messaging.adaptors.http.flow.GatewayTimeout. Tuttavia, puoi utilizzare lo stesso playbook per risolvere il codice di errore flow.APITimedOut.
La codifica specificata nell'intestazione della richiesta HTTP Content-Encoding è valida e
supportata da Apigee Edge,
MA
Il formato del payload inviato dal client come parte della richiesta HTTP non corrisponde al formato di codifica specificato nell'intestazione Content-Encoding
La codifica specificata nell'intestazione della risposta HTTP Content-Encoding del server di backend/di destinazione è valida e
supportata da Apigee Edge,
MA
Il formato del payload inviato dal server di backend/destinazione come parte della risposta HTTP non corrisponde al formato di codifica specificato nell'intestazione Content-Encoding
Il messaggio di errore e il formato possono variare a seconda dell'implementazione del server di backend.
Possibile causa:
Questo errore si verifica se il server di backend risponde con il codice di stato 504 ad Apigee Edge.
Nota: il codice di errore messaging.adaptors.http.flow.ErrorResponseCode non viene restituito nel messaggio di errore inviato alle applicazioni client. Il motivo è che questo codice di errore viene impostato da Apigee Edge ogni volta che il server di backend risponde con un errore e uno dei codici di stato 4XX o 5XX. Puoi visualizzare questo codice di errore in API Monitoring, log di accesso NGINX o database di analisi.
messaging.adaptors.http.flow.GatewayTimeout
Codice di stato HTTP:
504 Gateway Timeout
Messaggio di errore:
Gateway Timeout
Possibile causa:
Questo errore si verifica se il server di backend non risponde al processore di messaggi Apigee Edge entro il
periodo di timeout I/O configurato sul processore di messaggi.
Questo errore si verifica se l'intestazione Content-Length non viene trasmessa
dall'applicazione client come parte delle richieste HTTP POST e PUT
inviate ad Apigee Edge.
Nota: le richieste che non presentano questo errore non possono essere acquisite nello strumento Trace, poiché il processore di messaggi esegue questa convalida in una fase iniziale, molto prima di elaborare la richiesta e di eseguire qualsiasi criterio nel proxy API.
Per risolvere questo errore, procedi nel seguente modo:
Assicurati che l'applicazione client passi sempre l'intestazione
Content-Length come parte delle richieste HTTP POST e
PUT inviate ad Apigee Edge. Ad esempio:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
Anche se passi un payload vuoto con le richieste POST e PUT, assicurati che venga passata l'intestazione Content-Length: 0. Ad esempio:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
Codice di stato HTTP:
503 Service Unavailable
Messaggio di errore:
The Service is temporarily unavailable
Possibile causa:
Questo errore si verifica in uno dei seguenti scenari, se utilizzi
TargetServer in Apigee Edge:
La risoluzione DNS errata dell'host del server di backend da parte del server di autorizzazione personalizzato ha causato indirizzi IP errati che causavano errori di connessione.
Errori di timeout della connessione dovuti a:
La limitazione del firewall sul server di backend impedisce ad Apigee Edge di connettersi al server di backend.
Problemi di connettività di rete tra Apigee Edge e il server di backend.
L'host specificato in TargetServer non è corretto o contiene caratteri indesiderati (ad esempio uno spazio).
Questo errore si verifica se il processore di messaggi Apigee Edge non riceve il payload della richiesta dall'applicazione client per il
periodo di timeout I/O configurato nel componente Processore di messaggi.
Correggi
Assicurati che l'applicazione client invii il payload della richiesta entro il
periodo di timeout I/O configurato sul componente Message Processor di Apigee Edge.
messaging.adaptors.http.flow.ServiceUnavailable
Codice di stato HTTP:
503 Service Unavailable
Messaggio di errore:
The Service is temporarily unavailable
Possibile causa:
Questo errore si verifica in uno dei seguenti scenari:
La risoluzione DNS errata dell'host del server di backend da parte del server di autorizzazione personalizzato ha causato indirizzi IP errati che causavano errori di connessione.
Errori di timeout della connessione dovuti a:
La limitazione del firewall sul server di backend impedisce ad Apigee Edge di connettersi al server di backend.
Problemi di connettività di rete tra Apigee Edge e il server di backend.
L'host del server di destinazione specificato nell'endpoint di destinazione non è corretto o contiene caratteri indesiderati (come lo spazio).
Questo errore può verificarsi anche se il server di backend chiude prematuramente la connessione mentre il processore di messaggi continua a inviare il payload della richiesta al server di backend.
Questo errore si verifica se Apigee Edge non riesce a instradare la richiesta a uno qualsiasi degli endpoint TargetEndpoints per i seguenti motivi:
Nessuna condizione della regola di route (<RouteRule>) corrispondente alla richiesta in un proxy
E
Non è stata definita alcuna regola di route predefinita in ProxyEndpoint (ad es. <RouteRule> senza alcuna condizione)
Correggi
Per risolvere questo errore, segui queste istruzioni:
Esamina le regole di route definite in ProxyEndpoint e modificale per assicurarti che esista almeno una condizione della regola di route che corrisponda alla tua richiesta.
È buona norma definire una regola di route predefinita senza condizione se sono presenti più RouteRules.
Assicurati che la regola di route predefinita sia sempre definita per ultima nell'elenco delle route condizionali perché le regole vengono valutate dall'alto verso il basso in ProxyEndpoint.
Per scoprire di più sulla definizione delle condizioni <RouteRule> in un
ProxyEndpoint, consulta le
destinazioni condizionali.
messaging.runtime.SenseRaiseFault
Codice di stato HTTP:
403 Forbidden
Messaggio di errore:
Sense Fault
Possibile causa:
Questo errore si verifica se viene effettuata una richiesta API da un determinato indirizzo IP client che è bloccato nell'ambito delle regole Apigee Sense.
Correggi
Per risolvere questo errore, segui queste istruzioni:
Se l'indirizzo IP del client specifico non è bloccato, ma ricevi ancora questo errore, contatta l'assistenza Apigee Edge.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Codice di stato HTTP:
500 Internal Server Error
Messaggio di errore:
Bad Form Data
Possibile causa:
Questo errore si verifica solo se vengono soddisfatte tutte le seguenti condizioni:
La richiesta HTTP inviata dal client ad Apigee Edge contiene:
Content-Type: application/x-www-form-urlencoded,
e
Dati del modulo con il segno percentuale (%) o il segno percentuale (%) seguito da caratteri esadecimali non validi non consentiti in base a
Moduli - Sezione 17.13.4.1.
Il proxy API in Apigee Edge legge i parametri specifici del modulo contenenti tutti i caratteri non consentiti utilizzando il criterio ExtractVariables o AssegnaMessage nel flusso di richiesta.
Questo errore si verifica se un'intestazione HTTP specifica che non può avere duplicati in Apigee Edge, appare più di una volta con valori uguali o diversi come parte della richiesta HTTP inviata dall'applicazione client ad Apigee Edge.
Assicurati che la richiesta HTTP inviata dall'applicazione client ad Apigee Edge contenga sempre un nome di intestazione valido in base a
RFC 7230, sezione 3.2: campi intestazione.
protocol.http.HeaderNameWithNonAsciiChar
Codice di stato HTTP:
400 Bad Request
Messaggio di errore:
Header {header_name} contains non ascii character {character}
Possibile causa:
Questo errore si verifica se il nome dell'intestazione inviato come parte della richiesta HTTP dall'applicazione client ad Apigee Edge contiene caratteri non ASCII.
Header {header_name} contains invalid character {character}
Possibile causa:
Questo errore si verifica se il nome dell'intestazione inviato come parte della richiesta HTTP dall'applicazione client ad Apigee Edge contiene caratteri non validi, ad esempio uguale (=), virgola (,), punto e virgola (;), tab, CRLF e Newline.
Assicurati che la richiesta HTTP inviata dall'applicazione client ad Apigee Edge non contenga caratteri non validi nei nomi delle intestazioni secondo
RFC 7230, sezione 3.2.6: componenti valore campo
protocol.http.InvalidPath
Codice di stato HTTP:
400 Bad Request
Messaggio di errore:
Invalid path {path}
Possibile causa:
Questo errore si verifica se il percorso nell'URL della richiesta HTTP inviato dall'applicazione client ad Apigee Edge contiene caratteri non consentiti in base alla specifica RFC 3986, sezione 3.3: percorso.
Assicurati che il percorso nell'URL della richiesta HTTP inviato dall'applicazione client ad Apigee Edge non contenga caratteri non consentiti come
secondo RFC 3986, sezione 3.3: Percorso.
protocol.http.TooBigBody
Codice di stato HTTP:
413 Request Entity Too Large
Messaggio di errore:
Body buffer overflow
Possibile causa:
Questo errore si verifica se le dimensioni del payload inviate dall'applicazione client nell'ambito della richiesta HTTP ad Apigee Edge superano il limite consentito in Apigee Edge.
La dimensione totale di tutte le intestazioni delle richieste inviate dall'applicazione client nell'ambito della richiesta HTTP ad Apigee Edge superano il limite consentito in Apigee Edge.
Questo errore si verifica se le dimensioni della riga di richiesta inviata dall'applicazione client
come parte della richiesta HTTP ad Apigee Edge superano il limite consentito in
Apigee Edge.
Questo errore si verifica se l'intestazione Content-Encoding inviata dal client
come parte della risposta HTTP contiene un formato di codifica/payload non
supportato da Apigee Edge.
Questo errore si verifica se l'URL della richiesta del server di backend, rappresentato dalla variabile di flusso target.url, contiene un percorso che inizia con un punto interrogativo (?) invece di una barra (/), che non è validanon valida.
Questo errore si verifica se l'intestazione HTTP specifica che non può avere duplicati in Apigee Edge, appare più di una volta con valori uguali o diversi come parte della risposta HTTP inviata dal server di backend ad Apigee Edge.
Assicurati che la risposta HTTP inviata dal server di backend ad Apigee Edge contenga sempre un nome di intestazione valido in base a
RFC 7230, sezione 3.2: campi intestazione.
protocol.http.EmptyPath
Codice di stato HTTP:
500 Internal Server Error
Messaggio di errore:
Request path cannot be empty
Possibile causa:
Questo errore si verifica se l'URL della richiesta HTTP del server di backend, rappresentato dalla variabile di flusso target.url, contiene un percorso vuoto.
Header {header_name} contains non ascii character {character}
Possibile causa:
Questo errore si verifica se il nome dell'intestazione inviato dal server di backend come parte della risposta HTTP ad Apigee Edge contiene caratteri non ASCII.
Header {header_name} contains invalid character {character}
Possibile causa:
Questo errore si verifica se il nome dell'intestazione inviato dal server di backend nell'ambito della risposta HTTP contiene caratteri non validi, ad esempio uguale (=), virgola (,), punto e virgola (;), tab, CRLF e Newline.
Proxy refused to create tunnel with response status {status code}
Possibile causa:
Questo errore si verifica durante la creazione del tunnel tra Apigee Edge e il server di backend da parte del server proxy a causa di firewall, ACL (Access Control List), problemi di DNS, disponibilità della disponibilità del server di backend e così via.
Nota: il codice di stato nel messaggio di errore (faultstring) indica la causa generale del problema.
Response Status code 306 is reserved, so can't be used.
Possibile causa:
Questo errore si verifica se il server di backend ha risposto con codice di stato 306 ad Apigee Edge.
Il codice di stato 306 è stato definito in una versione precedente della
specifica HTTP. Secondo l'attuale specifica HTTP, questo codice è riservato e non deve essere utilizzato.
Poiché il codice di stato 306 è riservato, assicurati che il server di backend non utilizzi questo codice di stato durante l'invio di una risposta ad Apigee Edge.
protocol.http.Response405WithoutAllowHeader
Codice di stato HTTP:
502 Bad Gateway
Messaggio di errore:
Received 405 Response without Allow Header
Possibile causa:
Il server di backend risponde con il codice di stato 405 Method Not Allowed senza l'intestazione "Allow".
Questo errore si verifica se la risposta HTTP del server di backend ad Apigee Edge è 204 No Content o 205 Reset Content, ma contiene il corpo della risposta e/o una o più delle seguenti intestazioni:
Questo errore si verifica se le dimensioni del payload inviate dall'applicazione client nell'ambito della richiesta HTTP ad Apigee Edge superano il limite consentito in Apigee Edge.
Questo errore si verifica se la dimensione totale di tutte le intestazioni di risposta inviate dal server di backend come parte della risposta HTTP ad Apigee Edge supera il limite consentito in Apigee Edge.
Questo errore si verifica se le dimensioni della riga di risposta inviata dal server di backend come parte della risposta HTTP ad Apigee Edge superano il limite consentito in Apigee Edge.
Questo errore si verifica se l'intestazione Content-Encoding inviata dal server di backend come parte della risposta HTTP contiene il formato di codifica/payload non
supportato da Apigee Edge.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
Possibile causa:
Questo errore si verifica se l'alias chiave specifico a cui viene fatto riferimento in TargetEndpoint o TargetServer non viene trovato nell'archivio chiavi specifico.
Correggi
Assicurati che l'alias chiave specificato in TargetEndpoint o TargetServer esista e faccia parte dell'archivio chiavi specifico.
security.util.TrustStoreWithNoCertificates
Codice di stato HTTP:
500 Internal Server Error
Messaggio di errore:
TrustStore {truststore_name} has no certificates
Possibile causa:
Questo errore si verifica se l'archivio attendibilità specifico a cui viene fatto riferimento in TargetEndpoint o TargetServer non contiene certificati.
Correggi
Se vuoi convalidare il certificato del server di backend e utilizzare l'archivio attendibilità in un TargetEndpoint o TargetServer, assicurati che l'archivio attendibilità contenga i certificati validi del server di backend.