Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation weitere Informationen
Symptom
Die Clientanwendung erhält als Antwort auf API-Aufrufe den HTTP-Statuscode 415 Unsupported Media Type
mit dem Fehlercode protocol.http.UnsupportedEncoding
.
Fehlermeldung
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 415 Unsupported Media Type
Außerdem wird möglicherweise eine Fehlermeldung wie die folgende angezeigt:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
Mögliche Ursachen
Dieser Fehler tritt auf, wenn der Wert des Headers Content-Encoding
, der entweder in der vom Client an Apigee gesendeten HTTP-Anfrage oder der HTTP-Antwort, die vom Back-End-Server an Apigee gesendet wird, nicht die von Apigee unterstützte Codierung gemäß der Spezifikation
RFC 7231, Abschnitt 6.5.13: 415 Nicht unterstützter Medientyp enthält.
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Nicht unterstützte Codierung in der Anfrage | Der Anfrageheader Content-Encoding enthält eine Codierung, die von Apigee Edge nicht unterstützt wird. |
Nutzer von Edge Public und Private Cloud |
Nicht unterstützte Codierung in der Antwort | Der Antwortheader Content-Encoding des Back-End-Servers enthält eine Codierung, die von Apigee Edge nicht unterstützt wird. |
Nutzer von Edge Public und Private Cloud |
Allgemeine Diagnoseschritte
Zur Diagnose des Fehlers können Sie eine der folgenden Methoden verwenden:
API-Monitoring
So diagnostizieren Sie den Fehler mithilfe von API-Monitoring:
- Melden Sie sich bei Ihrem Apigee Edge-Konto an.
Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten:
- Rufen Sie die Seite Analysieren > API-Überwachung > Untersuchen auf.
- Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
- Achten Sie darauf, dass der Filter Proxy auf Alle festgelegt ist.
- Stellen Sie den Fehlercode der Zeit gegenüber.
Wählen Sie eine Zelle mit dem Fehlercode
protocol.http.UnsupportedEncoding
aus, wie unten dargestellt:Informationen zum Fehlercode
protocol.http.UnsupportedEncoding
werden wie unten dargestellt angezeigt:Klicken Sie auf Logs ansehen und maximieren Sie eine der Anfragen, die mit dem Fehler
415
fehlschlagen, um weitere Informationen zu sehen:- Notieren Sie sich im Fenster Logs die folgenden Details:
- Fehlerquelle: Zeigt an, dass der Fehler von
apigee
odertarget
zurückgegeben wird. - Fehlercode: Muss mit
protocol.http.UnsupportedEncoding
übereinstimmen.
- Fehlerquelle: Zeigt an, dass der Fehler von
- Wenn die Fehlerquelle
apigee
ist, weist dies darauf hin, dass die Anfrage eine nicht unterstützte Codierung imContent-Encoding
-Header enthielt. - Wenn die Fehlerquelle
target
ist, weist dies darauf hin, dass die Antwort des Back-End-Servers eine nicht unterstützte Codierung imContent-Encoding
-Header enthielt.
Trace-Tool
So diagnostizieren Sie den Fehler mit dem Trace-Tool:
- Aktivieren Sie die
Trace-Sitzung und entweder:
- Warten Sie, bis der Fehler
415 Unsupported Media Type
auftritt, oder - Wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus, um den Fehler
415 Unsupported Media Type
zu reproduzieren.
- Warten Sie, bis der Fehler
Achten Sie darauf, dass Show all FlowInfos aktiviert ist:
- Wählen Sie eine der fehlgeschlagenen Anfragen aus und prüfen Sie den Trace.
- Gehen Sie die verschiedenen Phasen des Trace durch und ermitteln Sie, wo der Fehler aufgetreten ist.
Der Fehler tritt normalerweise in einem Ablauf nach der Phase Anfrage an Zielserver gesendet auf, wie unten dargestellt:
Notieren Sie sich den Wert des Fehlers aus dem Trace.
Das obige Beispiel-Trace zeigt den Fehler als
Unsupported Encoding "utf-8"
. Da der Fehler von Apigee ausgelöst wird, nachdem die Anfrage an den Back-End-Server gesendet wurde, weist er darauf hin, dass der Back-End-Server den AntwortheaderContent-Encoding
mit dem Wert"utf-8"
gesendet hat. Dies ist keine unterstützte Codierung in Apigee.- Gehen Sie im Trace zur Phase AX (Analytics Data Recorded) und klicken Sie darauf.
Scrollen Sie nach unten zum Abschnitt Error / Response Headers (Fehler-/Antwortheader) im Bereich Phase Details (Phasendetails) und ermitteln Sie die Werte von X-Apigee-fail-code und X-Apigee-fail-source, wie unten dargestellt:
Die Werte von X-Apigee-fault-code und X-Apigee-fault-code werden als
protocol.http.UnsupportedEncoding
undtarget
angezeigt. Dies weist darauf hin, dass dieser Fehler verursacht wird, weil der nicht unterstützte Codierungswert"utf-8"
vom Back-End-Server im AntwortheaderContent-Encoding
übergeben wurde.Antwortheader Wert X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- Prüfen Sie, ob Sie
Proxy-Verkettung verwenden, d. h., ob der Zielserver/Zielendpunkt einen anderen Proxy in Apigee aufruft.
Um dies zu ermitteln, kehren Sie zur Phase An Zielserver gesendete Anfrage zurück. Klicken Sie auf Curl anzeigen.
- Das Fenster Curl for Request Sent to Target Server (Curl für an Zielserver gesendete Anfrage) wird geöffnet, in dem Sie den Alias des Zielserver-Hosts bestimmen können.
- Wenn der Hostalias des Zielservers auf einen virtuellen Hostalias verweist, handelt es sich um eine Proxyverkettung. In diesem Fall müssen Sie alle oben genannten Schritte für den verketteten Proxy wiederholen, bis Sie feststellen, was den Fehler
415 Unsupported Media Type
tatsächlich verursacht. - Wenn der Hostalias des Zielservers auf Ihren Back-End-Server verweist, bedeutet dies, dass Ihr Back-End-Server die nicht unterstützte Codierung an Apigee weitergibt.
Nginix-Zugriffslogs
So diagnostizieren Sie den Fehler mithilfe von NGINX-Zugriffslogs:
- Wenn Sie ein Private Cloud-Nutzer sind, können Sie mithilfe von NGINX-Zugriffslogs die wichtigsten Informationen zu HTTP-
415
-Fehlern ermitteln. Prüfen Sie die NGINX-Zugriffslogs:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Suchen Sie nach
415
-Fehlern innerhalb eines bestimmten Zeitraums (wenn das Problem in der Vergangenheit aufgetreten ist) oder ob es Anfragen mit415
gibt, die immer noch fehlschlagen. Wenn Sie
415
-Fehler mit dem X-Apigee-fault-code finden, der mit dem Wert vonprotocol.http.UnsupportedEncoding
übereinstimmt, bestimmen Sie den Wert von X-Apigee-fault-code .Beispiel 415-Fehler aus dem NGINX-Zugriffslog:
Der obige Beispieleintrag aus dem NGINX-Zugriffslog enthält die folgenden Werte für X- Apigee-Fehler-Code und X-Apigee-Fehler-Quelle:
Antwortheader Wert X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
X-Apigee-fault-source könnte auch denX-Apigee-fault-source Wert X-Apigee-fault-source haben.
Ursache: Nicht unterstützte Codierung in der Anfrage
Diagnose
- Bestimmen Sie den Fehlercode und die Fehlerquelle für den beobachteten Fehler mithilfe von API-Monitoring oder NGINX-Zugriffslogs, wie unter Allgemeine Diagnoseschritte erläutert.
- Wenn der Fehlercode
protocol.http.UnsupportedEncoding
lautet und die Fehlerquelle den Wertapigee
oderMP
hat, weist dies darauf hin, dass die von der Clientanwendung gesendete Anfrage eine nicht unterstützte Codierung im AnfrageheaderContent-Encoding
enthält. - Du kannst den Wert der nicht unterstützten Codierung, die als Teil der HTTP-Anfrage übergeben wird, mit einer der folgenden Methoden ermitteln:
Fehlermeldung
Über die Fehlermeldung:Wenn Sie Zugriff auf die vollständige Fehlermeldung von Apigee Edge haben, lesen Sie die
faultstring
.faultstring
enthält den Wert der nicht unterstützten Endcodierung.Beispiel für eine Fehlermeldung:
"faultstring":"Unsupported Encoding \"UTF-8\""
Beachten Sie in der obigen Fehlermeldung, dass der Wert der nicht unterstützten Codierung
“UTF-8”
ist, wie infaultstring
zu sehen.Da
“UTF-8”
keine unterstützte Codierung in Apigee Edge ist, schlägt diese Anfrage mit dem Fehler415 Unsupported Media Type
und dem Fehlercodeprotocol.http.UnsupportedEncoding
fehl.
Tatsächliche Anfrage
Tatsächliche Anfrage verwenden:- Wenn Sie keinen Zugriff auf die eigentliche Anfrage der Clientanwendung haben, wechseln Sie zu Lösung.
- Wenn Sie Zugriff auf die eigentliche Anfrage der Clientanwendung haben, führen Sie die folgenden Schritte aus:
- Ermitteln Sie den Wert, der an den Anfrageheader
Content-Encoding.
übergeben wird. - Wenn der an den Anfrageheader
Content-Encoding
übergebene Wert keiner der unter Unterstützte Codierung aufgeführten Werte ist, ist das die Ursache für diesen Fehler.Beispielanfrage:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
Die obige Beispielanfrage sendet den Wert
"UTF-8"
an den HeaderContent- Encoding
, was keine unterstützte Codierung in Apigee Edge ist. Daher schlägt diese Anfrage mit dem Fehler415 Unsupported Media Type
und dem Fehlercode fehl:protocol.http.UnsupportedEncoding
.
- Ermitteln Sie den Wert, der an den Anfrageheader
Auflösung
- Eine Liste der von Apigee unterstützten Codierungen finden Sie unter Unterstützte Codierung.
- Achten Sie darauf, dass die Clientanwendung immer Folgendes sendet:
- Nur die unterstützte Codierung als Wert für den
Content-Encoding
-Header in der Anfrage - Die Nutzlast der Anfrage an Apigee Edge im unterstützten Format und entspricht dem im
Content-Encoding
-Header angegebenen Format
- Nur die unterstützte Codierung als Wert für den
Im obigen Beispiel hat die Nutzlast der Anfrage eine
gz
-Erweiterung, die angibt, dass der Inhaltgzip
sein muss. Sie können das Problem beheben, indem Sie den Anfrageheader alsContent-Encoding: gzip
und die Anfragenutzlast im Formatgzip
senden:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
Ursache: Nicht unterstützte Codierung in der Antwort
Diagnose
- Bestimmen Sie den Fehlercode und die Fehlerquelle für den beobachteten Fehler mithilfe von API-Monitoring, Trace-Tool oder NGINX-Zugriffslogs, wie unter Allgemeine Diagnoseschritte erläutert.
- Wenn die Fehlerquelle den Wert
target
hat, weist dies darauf hin, dass die vom Back-End-Server gesendete Antwort eine nicht unterstützte Codierung imContent-Encoding
-Header enthält. - Sie können den Wert der nicht unterstützten Codierung als Teil der HTTP-Antwort vom Back-End-Server mit einer der folgenden Methoden ermitteln:
Fehlermeldung
Über die Fehlermeldung:Wenn Sie Zugriff auf die vollständige Fehlermeldung von Apigee Edge haben, lesen Sie die
faultstring
.faultstring
enthält den Wert der nicht unterstützten Codierung.Beispiel für eine Fehlermeldung:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
Beachten Sie in der obigen Fehlermeldung, dass der Wert der nicht unterstützten Codierung
“UTF-8”
ist, wie infaultstring
zu sehen.Da
“UTF-8”
in Apigee Edge keine unterstützte Codierung ist, schlägt diese Anfrage mit dem Fehler415 Unsupported Media Type
und dem Fehlercodeprotocol.http.UnsupportedEncoding
fehl.
Trace-Tool
Trace verwenden:- Wenn Sie das Trace für die fehlgeschlagene Anfrage nicht haben, wechseln Sie zu Lösung.
- Wenn Sie ein Trace für den Fehler erfasst haben, können Sie die nicht unterstützte Codierung ermitteln, die vom Back-End-Server als Teil des Antwortheaders
Content-Encoding
übergeben wird, wie unter Trace-Tool erläutert.
Auflösung
- Eine Liste der von Apigee unterstützten Codierungen finden Sie unter Unterstützte Codierung.
- Achten Sie darauf, dass der Back-End-Server immer Folgendes sendet:
- Nur die unterstützte Codierung als Wert für den
Content-Encoding
-Header in der Anfrage - Die Antwortnutzlast im unterstützten Format an Apigee Edge und entspricht dem im
Content-Encoding
-Header angegebenen Format
- Nur die unterstützte Codierung als Wert für den
Unterstützte Codierung
In der folgenden Tabelle ist das von Apigee Edge unterstützte Codierungsformat aufgeführt:
Header | Codierung | Beschreibung |
---|---|---|
Content-Encoding |
gzip |
Das Unix-Format gzip |
deflate |
Dieses Format verwendet die zlib -Struktur mit Deflate-Komprimierungsalgorithmus. |
Spezifikation
Apigee antwortet mit der Fehlerantwort 415 Unsupported Media Type
gemäß der folgenden RFC-Spezifikation:
Spezifikation |
---|
RFC 7231, Abschnitt 6.5.13: 415 Nicht unterstützter Medientyp |
Wichtige Hinweise
Wichtige Hinweise:
- Wenn der Fehler
415
von Apigee aufgrund einer nicht unterstützten Codierung imContent-Encoding
-Header als Teil der API-Anfrage zurückgegeben wird, dann:- Sie können den Trace für solche Anfragen nicht erfassen.
-
Sie können das Format oder den Inhalt der Fehlerantwort, die von Apigee Edge gesendet wurde, nicht mit Richtlinien wie IncreaseFault oderAssignMessage ändern.
Das liegt daran, dass dieser Fehler in einem frühen Stadium im Message Processor auftritt, bevor eine Richtlinie ausgeführt werden kann.
- Wenn der Fehler
415
von Apigee aufgrund einer nicht unterstützten Codierung im Antwortheader Ihres Back-End-Servers zurückgegeben wird, muss dies auf dem Back-End-Server behoben werden, um diesen Fehler zu vermeiden. Wenden Sie sich gegebenenfalls an Ihr Back-End-Team, um dieses Problem zu beheben.
Wenn Sie weiterhin Unterstützung vom Apigee Edge-Support benötigen, lesen Sie den Hilfeartikel Diagnoseinformationen müssen erfasst werden.
Erfassen von Diagnoseinformationen erforderlich
Wenn Sie weiterhin Unterstützung vom Apigee-Support benötigen, stellen Sie die folgenden Diagnoseinformationen zusammen und wenden Sie sich an den Apigee Edge-Support:
Wenn Sie ein Public Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Name der Umgebung
- API-Proxy-Name
- Führen Sie den Befehl
curl
aus, mit dem der Fehler415
reproduziert wurde - Ablaufverfolgungsdatei für die API-Anfragen
Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung bei fehlgeschlagenen Anfragen
- Name der Umgebung
- API-Proxy-Bundle
- Ablaufverfolgungsdatei für die API-Anfragen
NGINX-Zugriffslogs
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Hierbei gilt: ORG, ENV und PORT# werden durch tatsächliche Werte ersetzt.
- Systemprotokolle von Message Processor
/opt/apigee/var/log/edge-message- processor/logs/system.log