Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Sintomo
L'applicazione client riceve un codice di stato HTTP 415 Unsupported Media Type
con codice di errore protocol.http.UnsupportedEncoding
in risposta alle chiamate API.
Messaggio di errore
L'applicazione client riceve il seguente codice di risposta:
HTTP/1.1 415 Unsupported Media Type
Inoltre, potrebbe essere visualizzato un messaggio di errore simile a quello mostrato di seguito:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
Possibili cause
Questo errore si verifica se il valore dell'intestazione Content-Encoding
specificato nella richiesta HTTP inviata dal client ad Apigee o nella risposta HTTP inviata dal server di backend ad Apigee non contiene la codifica supportata da Apigee, secondo la specifica
RFC 7231, sezione 6.5.13: 415 tipo di media non supportato.
Le possibili cause di questo errore sono le seguenti:
Causa | Descrizione | Istruzioni per la risoluzione dei problemi applicabili a |
---|---|---|
Codifica non supportata utilizzata nella richiesta | L'intestazione della richiesta Content-Encoding contiene una codifica non supportata da Apigee Edge. |
Utenti di cloud pubblico e privato perimetrale |
Codifica non supportata utilizzata nella risposta | L'intestazione della risposta del server di backend Content-Encoding contiene una codifica non supportata da Apigee Edge. |
Utenti di cloud pubblico e privato perimetrale |
Passaggi di diagnosi più comuni
Per diagnosticare l'errore, puoi utilizzare uno dei seguenti metodi:
Monitoraggio delle API
Per diagnosticare l'errore utilizzando il monitoraggio delle API:
- Accedi al tuo account Apigee Edge.
Passa all'organizzazione in cui vuoi esaminare il problema:
- Vai alla pagina Analizza > Monitoraggio API > Esamina.
- Seleziona il periodo di tempo specifico in cui hai riscontrato gli errori.
- Assicurati che il filtro Proxy sia impostato su Tutti.
- Traccia Codice di errore su Ora.
Seleziona una cella con il codice di errore
protocol.http.UnsupportedEncoding
come mostrato di seguito:Le informazioni sul codice di errore
protocol.http.UnsupportedEncoding
vengono visualizzate come mostrato di seguito:Fai clic su Visualizza log ed espandi una delle richieste non riuscite con errore
415
per visualizzare ulteriori informazioni:- Nella finestra Log, prendi nota dei seguenti dettagli:
- Origine errore: viene visualizzato che l'errore viene restituito da
apigee
otarget
. - Codice di errore: deve corrispondere a
protocol.http.UnsupportedEncoding
.
- Origine errore: viene visualizzato che l'errore viene restituito da
- Se l'origine dell'errore è
apigee
, significa che la richiesta conteneva una codifica non supportata nell'intestazioneContent-Encoding
. - Se l'origine dell'errore è
target
, significa che la risposta del server di backend conteneva una codifica non supportata nell'intestazioneContent-Encoding
.
Strumento Traccia
Per diagnosticare l'errore utilizzando lo strumento Trace:
- Abilita la
sessione di traccia e:
- Attendi che si verifichi l'errore
415 Unsupported Media Type
oppure - Se riesci a riprodurre il problema, esegui la chiamata API per riprodurre
l'errore
415 Unsupported Media Type
.
- Attendi che si verifichi l'errore
Assicurati che l'opzione Mostra tutte le FlowInfos sia attivata:
- Seleziona una delle richieste non riuscite ed esamina la traccia.
- Naviga tra le diverse fasi della traccia e individua il punto in cui si è verificato l'errore.
In genere, l'errore si trova in un flusso successivo alla fase Richiesta inviata al server di destinazione, come mostrato di seguito:
Prendi nota del valore dell'errore della traccia.
La traccia di esempio precedente mostra l'errore come
Unsupported Encoding "utf-8"
. Poiché l'errore viene generato da Apigee dopo l'invio della richiesta al server di backend, indica che il server di backend ha inviato l'intestazione della rispostaContent-Encoding
con il valore"utf-8"
, che non è una codifica supportata in Apigee.- Vai alla fase AX (Analytics Data Recorded) della traccia e fai clic.
Scorri verso il basso fino alla sezione Intestazioni errore / risposta nel riquadro Dettagli fase e determina i valori di X-Apigee-fault-code e X-Apigee-fault-source, come mostrato di seguito:
Vedrai i valori di X-Apigee-fault-code e X-Apigee-fault-source come
protocol.http.UnsupportedEncoding
etarget
, a indicare che questo errore è dovuto al fatto che il valore di codifica non supportato di"utf-8"
è stato trasmesso dal server di backend nell'intestazione della rispostaContent-Encoding
.Intestazioni della risposta Valore X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- Verifica se stai utilizzando un
concatenamento di proxy, ovvero se l'endpoint del server/target di destinazione richiama un altro proxy in Apigee.
Per determinarlo, torna alla fase Richiesta inviata al server di destinazione. Fai clic su Mostra arricciatura.
- Si apre la finestra Curl per la richiesta inviata al server di destinazione dalla quale puoi determinare l'alias host del server di destinazione.
- Se l'alias dell'host del server di destinazione rimanda a un alias host virtuale, si tratta di un concatenamento dei proxy. In questo caso, devi ripetere tutti i passaggi precedenti per il proxy concatenato fino a determinare la causa effettiva dell'errore
415 Unsupported Media Type
. - Se l'alias dell'host del server di destinazione rimanda al tuo server di backend, ciò indica che il server di backend passa la codifica non supportata ad Apigee.
Log degli accessi Nginix
Per diagnosticare l'errore utilizzando i log degli accessi di NGINX:
- Se sei un utente Private Cloud, puoi utilizzare i log degli accessi di NGINX per determinare le informazioni chiave sugli errori HTTP
415
. Controlla i log degli accessi di NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Cerca eventuali errori
415
durante un periodo di tempo specifico (se il problema si è verificato in passato) o se ci sono ancora richieste che continuano a non funzionare con415
. Se riscontri errori
415
con X-Apigee-fault-code corrispondente al valore diprotocol.http.UnsupportedEncoding
, determina il valore di X-Apigee-fault-codeEsempio di errore 415 dal log degli accessi di NGINX:
La voce di esempio precedente del log degli accessi NGINX ha i seguenti valori per X- Apigee-fault-code e X-Apigee-fault-source:
Intestazioni della risposta Valore X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
X-Apigee-fault-source potrebbe avere anche il valore
target
.
Causa: codifica non supportata nella richiesta
Diagnostica
- Determina il codice di errore e l'origine dell'errore per l'errore osservato utilizzando i log di accesso dell'API Monitoring o NGINX, come spiegato nella sezione Passaggi comuni della diagnostica.
- Se il codice di errore è
protocol.http.UnsupportedEncoding
e l'origine dell'errore ha il valoreapigee
oMP
, significa che la richiesta inviata dall'applicazione client contiene una codifica non supportata nell'intestazione della richiestaContent-Encoding
. - Puoi determinare il valore della codifica non supportata trasmessa come parte della richiesta HTTP utilizzando uno dei seguenti metodi:
Messaggio di errore
Tramite il messaggio di errore:Se hai accesso al messaggio di errore completo ricevuto da Apigee Edge, fai riferimento all'
faultstring
.faultstring
contiene il valore della codifica di fine non supportata.Esempio di messaggio di errore:
"faultstring":"Unsupported Encoding \"UTF-8\""
Nel messaggio di errore riportato sopra, nota che il valore della codifica non supportata è
“UTF-8”
come indicato infaultstring
.Poiché
“UTF-8”
non è una codifica supportata in Apigee Edge, questa richiesta non va a buon fine e viene restituito l'errore415 Unsupported Media Type
con il codice di errore:protocol.http.UnsupportedEncoding
.
Richiesta effettiva
Con la richiesta effettiva:- Se non hai accesso alla richiesta effettiva effettuata dall'applicazione client, vai a Risoluzione.
- Se hai accesso alla richiesta effettiva effettuata dall'applicazione client, segui questi passaggi:
- Determina il valore passato all'intestazione della richiesta
Content-Encoding.
- Se il valore passato all'intestazione della richiesta
Content-Encoding
non è uno dei valori elencati in Codifica supportata, questa è la causa di questo errore.Richiesta di esempio:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
La richiesta di esempio precedente invia il valore
"UTF-8"
all'intestazioneContent- Encoding
, che non è una codifica supportata in Apigee Edge. Pertanto, questa richiesta ha esito negativo e genera un errore415 Unsupported Media Type
con il codice di errore:protocol.http.UnsupportedEncoding
.
- Determina il valore passato all'intestazione della richiesta
Risoluzione
- Consulta l'elenco delle codifiche supportate da Apigee in Codifica supportata.
- Assicurati che l'applicazione client invii sempre quanto segue:
- Solo la codifica supportata come valore dell'intestazione
Content-Encoding
nella richiesta - Il payload della richiesta nel formato supportato su Apigee Edge e corrisponde al formato specificato nell'intestazione
Content-Encoding
- Solo la codifica supportata come valore dell'intestazione
Nell'esempio precedente, il payload della richiesta ha un'estensione
gz
, che indica che i contenuti devono esseregzip
. Puoi risolvere il problema inviando l'intestazione della richiesta comeContent-Encoding: gzip
e il payload della richiesta in formatogzip
:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
Causa: codifica non supportata nella risposta
Diagnostica
- Determina il codice di errore e l'origine dell'errore per l'errore osservato mediante i log degli accessi di API Monitoring, Trace Tool o NGINX, come spiegato nella sezione Passaggi comuni della diagnostica.
- Se Origine dell'errore ha il valore
target
, significa che la risposta inviata dal server di backend contiene una codifica non supportata nell'intestazioneContent-Encoding
. - Puoi determinare il valore della codifica non supportata trasmessa come parte della risposta HTTP dal server di backend utilizzando uno dei seguenti metodi:
Messaggio di errore
Tramite il messaggio di errore:Se hai accesso al messaggio di errore completo ricevuto da Apigee Edge, fai riferimento all'
faultstring
.faultstring
contiene il valore di una codifica non supportata.Esempio di messaggio di errore:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
Nel messaggio di errore riportato sopra, nota che il valore della codifica non supportata è
“UTF-8”
come indicato infaultstring
.Poiché
“UTF-8”
non è una codifica supportata in Apigee Edge, questa richiesta non va a buon fine e genera un errore415 Unsupported Media Type
con il codice di errore:protocol.http.UnsupportedEncoding
.
Strumento Traccia
Utilizzo di Trace:- Se non hai la traccia per la richiesta non riuscita, vai a Risoluzione.
- Se hai acquisito una traccia per l'errore, puoi determinare la codifica non supportata trasmessa dal server di backend nell'ambito dell'intestazione della risposta
Content-Encoding
, come spiegato nello strumento Traccia.
Risoluzione
- Consulta l'elenco delle codifiche supportate da Apigee in Codifica supportata
- Assicurati che il server di backend invii sempre quanto segue:
- Solo la codifica supportata come valore dell'intestazione
Content-Encoding
nella richiesta - Il payload della risposta nel formato supportato su Apigee Edge corrisponde al formato specificato nell'intestazione
Content-Encoding
- Solo la codifica supportata come valore dell'intestazione
Codifica supportata
Nella tabella seguente sono elencati i formati di codifica supportati da Apigee Edge:
Titolo | Codifica | Descrizione |
---|---|---|
Content-Encoding |
gzip |
Formato Unix gzip |
deflate |
Questo formato utilizza la struttura zlib con l'algoritmo di compressione deflate. |
Specifiche
Apigee risponde con la risposta di errore 415 Unsupported Media Type
in base alla
seguente specifica RFC:
Specifiche |
---|
RFC 7231, sezione 6.5.13: 415 Tipo di supporto non supportato |
Punti chiave da considerare
Tieni presente quanto segue:
- Se l'errore
415
viene restituito da Apigee a causa di una codifica non supportata passata nell'intestazioneContent-Encoding
come parte della richiesta API:- Non potrai acquisire la traccia per queste richieste.
-
Non potrai modificare il formato o il contenuto della risposta di errore inviata da Apigee Edge utilizzando criteri come RaiseFault, AssignMessage.
Il motivo è che questo errore si verifica in una fase iniziale del processore di messaggi prima di poter eseguire qualsiasi criterio.
- Se Apigee restituisce l'errore
415
a causa di una codifica non supportata trasmessa nell'intestazione della risposta dal server di backend, deve essere corretta nel server di backend per evitare questo errore. Collabora con il team di backend per risolvere il problema.
Se hai ancora bisogno di assistenza da parte dell'Assistenza Apigee Edge, visita la pagina Raccogliere informazioni diagnostiche.
Devi raccogliere dati diagnostici
Se hai ancora bisogno di aiuto dall'Assistenza Apigee, raccogli le seguenti informazioni di diagnostica e contatta l'Assistenza Apigee Edge:
Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
- Nome dell'organizzazione.
- Nome ambiente
- Nome proxy API
- Comando
curl
completo utilizzato per riprodurre l'errore415
- File di traccia per le richieste API
Se sei un utente Private Cloud, fornisci le seguenti informazioni:
- Messaggio di errore completo osservato per le richieste non riuscite
- Nome ambiente
- Bundle del proxy API
- File di traccia per le richieste API
Log degli accessi NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dove: ORG, ENV e PORT# vengono sostituiti con i valori effettivi.
- Log di sistema del processore di messaggi
/opt/apigee/var/log/edge-message- processor/logs/system.log