Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Sintomo
L'applicazione client riceve un codice di stato HTTP di 415 Unsupported Media Type
con
il 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, potresti visualizzare 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 in
la richiesta HTTP inviata dal client ad Apigee o la risposta HTTP inviata dal server di backend per
Apigee non contiene
codifica supportata da Apigee, secondo la specifica
RFC 7231, sezione 6.5.13: 415 supported Media Type (Tipo di supporto non supportato).
Le possibili cause di questo errore sono le seguenti:
Causa | Descrizione | Le istruzioni di risoluzione dei problemi applicabili a |
---|---|---|
Utilizzata codifica non supportata nella richiesta | L'intestazione della richiesta Content-Encoding contiene una codifica non supportata
di Apigee Edge. |
Utenti perimetrali di cloud pubblici e privati |
Utilizzata codifica non supportata nella risposta | L'intestazione della risposta del server di backend Content-Encoding contiene una codifica
non è supportato da Apigee Edge. |
Utenti perimetrali di cloud pubblici e privati |
Passaggi diagnostici comuni
Per diagnosticare l'errore, puoi utilizzare uno dei seguenti metodi:
Monitoraggio delle API
Per diagnosticare l'errore utilizzando API Monitoring:
- Accedi al tuo account Apigee Edge.
Passa all'organizzazione in cui vuoi esaminare il problema:
- Vai al menu Analizza > Monitoraggio delle API > Esamina.
- Seleziona il periodo di tempo specifico in cui hai osservato gli errori.
- Assicurati che il filtro Proxy sia impostato su Tutti.
- Traccia il codice di errore in base all'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 che non vanno a buon fine con
415
per visualizzare ulteriori informazioni:- Nella finestra Log, tieni presente i seguenti dettagli:
- .
- Origine errore:indica che l'errore viene restituito da
apigee
. otarget
. - Codice di errore: deve corrispondere a
protocol.http.UnsupportedEncoding
.
- Origine errore:indica che l'errore viene restituito da
- Se l'origine errore è
apigee
, significa che la richiesta conteneva una codifica non supportata nell'intestazioneContent-Encoding
. - Se l'origine di errore è
target
, significa che il server di backend la risposta conteneva una codifica non supportata nell'intestazioneContent-Encoding
.
Strumento Trace
Per diagnosticare l'errore utilizzando lo strumento Trace:
- Attiva lo
sessione di tracciamento e:
- .
- Attendi che si verifichi l'errore
415 Unsupported Media Type
oppure - Se riesci a riprodurre il problema, esegui la chiamata API per riprodurre
415 Unsupported Media Type
errore.
- Attendi che si verifichi l'errore
Assicurati che l'opzione Show all FlowInfos (Mostra tutte le informazioni di FlowInfos) sia attivata:
- Seleziona una delle richieste non riuscite ed esamina la traccia.
- Naviga attraverso le diverse fasi della traccia e individua dove si è verificato l'errore.
In genere troverai l'errore in un flusso successivo al messaggio Richiesta inviata al target server come mostrato di seguito:
Prendi nota del valore dell'errore della traccia.
La traccia di esempio riportata sopra mostra l'errore come
Unsupported Encoding "utf-8"
. Dal giorno 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 di"utf-8"
, che non è un codifica supportata in Apigee.- Vai alla fase AX (dati registrati di Analytics) della traccia e fai clic su quest'ultima.
Scorri verso il basso fino alla sezione Intestazioni errore / risposta in Dettagli fase. e stabilire 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
, che indicano che è dovuto al fatto che il valore di codifica di"utf-8"
non supportato è 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
concatenamento dei proxy; ovvero se il server/endpoint di destinazione richiama un altro
in Apigee.
Per determinarlo, torna alla fase Richiesta inviata al server di destinazione. Fai clic su Mostra arricciatura.
- Si apre la finestra Curl per richieste inviate 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 dell'host virtuale, si tratta di un proxy
concatenamento. In questo caso, devi ripetere tutti i passaggi precedenti per il proxy concatenato fino a quando
sei tu a determinare la causa dell'errore
415 Unsupported Media Type
. - Se l'alias dell'host del server di destinazione rimanda al tuo server di backend, questo indica che il tuo server di backend trasmette ad Apigee la codifica non supportata.
Log di accesso Nginix
Per diagnosticare l'errore utilizzando i log di accesso NGINX:
- Se sei un utente Private Cloud, puoi utilizzare i log di accesso NGINX per determinare
le informazioni principali sugli errori HTTP
415
. Controlla i log di accesso 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 non vanno a buon fine con415
. Se trovi errori
415
con la corrispondenza X-Apigee-fault-code il valore diprotocol.http.UnsupportedEncoding
, quindi determina il valore della X-Apigee-fault-source.Esempio di errore 415 nel log di accesso NGINX:
La voce di esempio riportata sopra del log di accesso NGINX ha i seguenti valori per X- Codice di errore Apigee e fonte-fault-X-Apigee:
Intestazioni della risposta Valore X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
La X-Apigee-fault-source potrebbe avere anche ilX-Apigee-fault-source valoreX-Apigee-fault-source
Causa: codifica non supportata nella richiesta
Diagnosi
- Determinare il codice di errore e l'origine errore per l'errore osservato utilizzando l'API Log di accesso di Monitoring o NGINX come spiegato in Passaggi diagnostici comuni.
- Se il codice di errore è
protocol.http.UnsupportedEncoding
e il valore di errore L'origine ha il valoreapigee
oMP
, questo indica che l'elemento La richiesta inviata dall'applicazione client contiene una codifica non supportata nell'intestazione della richiestaContent-Encoding
, - Puoi determinare il valore della codifica non supportata passata come parte della richiesta HTTP
utilizzando uno dei seguenti metodi:
Messaggio di errore
Utilizzo del messaggio di errore:- .
Se hai accesso al messaggio di errore completo ricevuto da Apigee Edge, consulta al
faultstring
.faultstring
contiene il valore del parametro non supportato endcoding.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 riesce e restituisce l'errore415 Unsupported Media Type
con il codice di errore:protocol.http.UnsupportedEncoding
.
Richiesta effettiva
Mediante 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, esegui la
seguenti 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, sarà la causa di questo errore.Esempio di richiesta:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
La richiesta di esempio riportata sopra invia il valore
"UTF-8"
all'intestazioneContent- Encoding
, che non è Codifica supportata in Apigee Edge. Pertanto, questa richiesta non va a buon fine e restituisce415 Unsupported Media Type
errore 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
in la richiesta - Il payload della richiesta nel formato supportato per Apigee Edge 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
Diagnosi
- Determinare il codice di errore e l'origine errore per l'errore osservato utilizzando l'API Log di accesso di Monitoring, dello strumento di tracciamento o di NGINX, come spiegato in Passaggi comuni per la diagnosi.
- Se il campo Origine errore ha il valore
target
, significa che la risposta inviata dal server di backend contiene una codifica non supportata nelContent-Encoding
intestazione. - Puoi determinare il valore della codifica non supportata passata come parte della risposta HTTP da
al server di backend utilizzando uno dei seguenti metodi:
Messaggio di errore
Utilizzo del messaggio di errore:- .
Se hai accesso al messaggio di errore completo ricevuto da Apigee Edge, consulta il
faultstring
.faultstring
contiene il valore del parametro 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, richiesta non riuscita e genera415 Unsupported Media Type
errore con il codice di errore:protocol.http.UnsupportedEncoding
.
Strumento Trace
Utilizzo di Trace:- .
- Se non disponi della traccia per la richiesta non riuscita, vai a Risoluzione.
- Se hai acquisito una traccia per l'errore, puoi determinare quali
codifica passata dal server di backend come parte della risposta
Content-Encoding
come spiegato nello strumento Trace.
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 del valore
Intestazione
Content-Encoding
nella richiesta - Il payload della risposta nel formato supportato per Apigee Edge corrisponde al formato
specificato nell'intestazione
Content-Encoding
- Solo la codifica supportata come valore del valore
Intestazione
Codifica supportata
Nella tabella seguente sono elencati i formati di codifica supportati da Apigee Edge:
Intestazione | Codifica | Descrizione |
---|---|---|
Content-Encoding |
gzip |
Il formato Unix gzip |
deflate |
Questo formato utilizza la struttura zlib con algoritmo di compressione deflate. |
Specifica
Apigee risponde con la risposta di errore 415 Unsupported Media Type
in base alle
seguente specifica RFC:
Specifica |
---|
RFC 7231, sezione 6.5.13: 415 Tipo di media non supportato |
Punti chiave da tenere presente
Tieni presente quanto segue:
- Se Apigee restituisce l'errore
415
a causa di una codifica non supportata passata l'intestazioneContent-Encoding
come parte della richiesta API, quindi:- .
- Non potrai acquisire la traccia per queste richieste.
-
Non potrai modificare il formato o il contenuto della risposta di errore inviata da Apigee Edge usando criteri come RaiseFault, AssignMessage.
Il motivo è che questo errore si verifica in una fase iniziale nel processore di messaggi prima che è possibile eseguire.
- Se Apigee restituisce l'errore
415
a causa di una codifica non supportata superata nell'intestazione della risposta dal server di backend, quindi deve essere corretto in il server di backend per evitare questo errore. Collabora con il team backend in modo da per risolvere il problema.
Se hai ancora bisogno di assistenza da parte dell'Assistenza Apigee Edge, vai a Devi raccogliere i dati diagnostici.
Raccogliere dati diagnostici
Se hai ancora bisogno di aiuto dall'assistenza Apigee, raccogli quanto segue informazioni diagnostiche e contattare l'assistenza Apigee Edge:
Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
- Nome organizzazione
- Nome ambiente
- Nome proxy API
- Completa il comando
curl
utilizzato per riprodurre l'errore415
- File di traccia per le richieste API
Se sei un utente di Private Cloud, fornisci le seguenti informazioni:
- Messaggio di errore completo osservato per le richieste non riuscite
- Nome ambiente
- Bundle proxy API
- File di traccia per le richieste API
Log di accesso NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dove: ORG, ENV e PORT# vengono sostituiti con valori effettivi.
- Log di sistema del processore di messaggi
/opt/apigee/var/log/edge-message- processor/logs/system.log