<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die Clientanwendung ruft den HTTP-Statuscode 502 Bad Gateway
mit dem Fehler ab
Code protocol.http.Response405WithoutAllowHeader
als Antwort für API-Aufrufe.
Fehlermeldung
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 502 Bad Gateway
Außerdem wird möglicherweise die folgende Fehlermeldung angezeigt:
{ "fault":{ "faultstring":"Received 405 Response without Allow Header", "detail":{ "errorcode":"protocol.http.Response405WithoutAllowHeader" } } }
Mögliche Ursachen
Dieser Fehler tritt auf, wenn der Backend-Server mit dem Status 405 Method Not Allowed
antwortet
ohne den Header Allow
.
Gemäß Spezifikation
<ph type="x-smartling-placeholder"></ph>
RFC 7231, Abschnitt 6.5.5: 405 Method Not Allowed steht, wird erwartet, dass der Ursprungsserver
MÜSSEN ein Header-Feld Allow
in einer 405
-Antwort mit einem
Liste der derzeit unterstützten Methoden der Zielressource. Wenn nicht, antwortet Apigee mit
502 Bad Gateway
und Fehlercode protocol.http.Response405WithoutAllowHeader
.
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Antwort 405 ohne „Allow“-Header vom Backend-Server | Der Backend-Server, der die API-Anfrage verarbeitet, antwortet mit dem Statuscode 405 ohne den Header Allow . |
Edge-Nutzer von öffentlichen und privaten Clouds |
Allgemeine Diagnoseschritte
Verwenden Sie eines der folgenden Tools oder Techniken, um diesen Fehler zu diagnostizieren:
API-Monitoring
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von API-Monitoring:
- Melden Sie sich bei der Edge-UI als Nutzer mit einem Rolle.
Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.
- Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
- Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.
<ph type="x-smartling-placeholder">Wähle eine Zelle mit dem Fehlercode aus
protocol.http.Response405WithoutAllowHeader
, wie unten gezeigt:Informationen zum Fehlercode
protocol.http.Response405WithoutAllowHeader
wird wie folgt angezeigt:Klicken Sie auf Logs ansehen und maximieren Sie eine der fehlgeschlagenen Anfragen, um weitere Informationen zu sehen.
- Im Fenster Logs werden die folgenden Details angezeigt:
<ph type="x-smartling-placeholder">
- </ph>
- Statuscode:
502
- Fehlerquelle:
target
- Fehlercode:
protocol.http.Response405WithoutAllowHeader
.
- Statuscode:
- Wenn die Fehlerquelle
target
und der Fehlercodeprotocol.http.Response405WithoutAllowHeader
, dann bedeutet dies, dass das Back-End Der Server hat mit dem Statuscode405 Method Not Allowed
ohne denAllow
-Header.
Trace-Tool
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mit dem Trace-Tool:
- Aktivieren Sie die Funktion .
Trace-Sitzung und entweder
<ph type="x-smartling-placeholder">
- </ph>
- Warten Sie, bis der Fehler
502 Bad Gateway
auftritt, oder - Wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus, um es zu reproduzieren:
502 Bad Gateway
Fehler
- Warten Sie, bis der Fehler
Achten Sie darauf, dass Show all FlowInfos (Alle FlowInfos anzeigen) 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.
Sie finden den Fehler normalerweise in einem Ablauf nach der Anfrage an den Zielserver gesendet wie unten dargestellt:
Notieren Sie sich den Wert des Fehlers aus dem Trace.
Im obigen Beispiel-Trace wird der Fehler als
Received 405 Response without Allow Header
angezeigt. Da der Fehler von Apigee ausgegeben wird, nachdem die Anfrage an das Backend gesendet wurde Server gibt es an, dass der Backend-Server den Antwortstatuscode405
gesendet hat. ohne den HeaderAllow
.- Navigieren Sie im Trace zur Phase AX (Analytics Data Recorded) und klicken Sie darauf.
Scrollen Sie nach unten zum Abschnitt Error / Response Headers (Fehler-/Antwort-Header) in den Phase Details (Phase-Details). und bestimmen die für X-Apigee-fault-code und X-Apigee-fault-code, wie unten gezeigt:
- Sie sehen die Werte X-Apigee-fault-code und X-Apigee-fault-code als
protocol.http.Response405WithoutAllowHeader
bzw.target
, Dieser Fehler wird dadurch verursacht, dass das Backend den Antwortstatuscode405
ohne den HeaderAllow
.Antwortheader Wert X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
NGINX
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von NGINX-Zugriffslogs:
- Wenn Sie ein Private Cloud-Nutzer sind, können Sie mithilfe von NGINX-Zugriffslogs die
wichtige Informationen zu HTTP-
502
-Fehlern. Prüfen Sie die NGINX-Zugriffslogs:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Dabei gilt:ORG, ORG und PORT# werden durch tatsächliche Werte ersetzt.
- Nach
502
-Fehlern mit Fehlercode suchenprotocol.http.Response405WithoutAllowHeader
während eines bestimmten Zeitraums (wenn der in der Vergangenheit aufgetreten ist) oder wenn immer noch Anfragen mit502
Wenn Sie
502
-Fehler mit dem X-Apigee-fault-code finden, der den Wert vonprotocol.http.Response405WithoutAllowHeader
und ermitteln Sie dann den Wert der X-Apigee-fault-source..Beispielfehler 502 aus dem NGINX-Zugriffsprotokoll:
Der obige Beispieleintrag aus dem NGINX-Zugriffslog enthält die folgenden Werte für X-Apigee- Fehlercode und X-Apigee-Fehler-Quelle:
Antwortheader Wert X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
Ursache: 405-Antwort ohne „Allow“-Header vom Backend-Server
Diagnose
- Ermitteln Sie den Fehlercode und die Fehlerquelle für
502 Bad Gateway
. mithilfe von API-Überwachungs-, Trace-Tool- oder NGINX-Zugriffslogs, wie in Häufige Diagnoseschritte. - Wenn der Fehlercode
protocol.http.Response405WithoutAllowHeader
ist und Fehlerquelle den Werttarget
hat, weist dies darauf hin, dass der Backend-Server hat mit einem405
-Statuscode ohneAllow
-Header geantwortet. Dementsprechend wird Apigee antwortet mit502 Bad Gateway
und dem Fehlercodeprotocol.http.Response405WithoutAllowHeader
.
Auflösung
Verwenden Sie eine der folgenden Methoden, um das Problem zu beheben:
Back-End-Server
Option 1: Korrigieren Sie den Backend-Server, damit dieser den Statuscode 405 mit dem Header „Allow“ sendet:
<ph type="x-smartling-placeholder">Sicherstellen, dass der Backend-Server immer die Spezifikation einhält <ph type="x-smartling-placeholder"></ph> RFC 7231, Abschnitt 6.5.5: 405 Method Not Allowed und sendet mit dem Status
405
. indem Sie die Liste der zulässigen Methoden als Teil einesAllow
-Headers einfügen wie unten dargestellt:Allow: HTTP_METHODS
- Wenn dein Backend-Server beispielsweise
GET
,POST
undHEAD
-Methoden verwenden, müssen Sie darauf achten, dass der HeaderAllow
Folgendes enthält: wie folgt:Allow: GET, POST, HEAD
Fehlerbehebung
Option 2: Fehlerbehandlung verwenden, um den Statuscode 405 mit dem „Allow“-Header von Ihrer API zu senden Proxy:
<ph type="x-smartling-placeholder">
Wenn der Backend-Server den Statuscode 405
ohne das Allow
-Objekt zurückgibt
können Sie mithilfe der Fehlerbehandlung mit dem Statuscode 405
und dem
Allow
-Header von Ihrem API-Proxy folgendermaßen ab:
Erstellen Sie eine Richtlinie wie AssignMessage-Richtlinie oder RaiseFault-Richtlinie und setzen Sie den Statuscode auf
405
mit dem HeaderAllow
und einem benutzerdefinierten angezeigt.Beispiel-Richtlinie „AssignMessage“ zum Senden von 405-Fehlern mit dem Header „Allow“:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-405WithAllowHeader"> <DisplayName>AM-405WithAllowHeader</DisplayName> <Set> <Payload contentType="application/json">{"Specified method is not allowed. Please use one of the methods mentioned in the Allow header."}</Payload> <StatusCode>405</StatusCode> <ReasonPhrase>Method Not Allowed</ReasonPhrase> </Set> <Add> <Headers> <Header name="Allow">GET, POST, HEAD</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
FaultRule
inTargetEndpoint
erstellen, die die Richtlinie aufruft bei Ausgabe des Fehlers502
mit dem Fehlercodeprotocol.http.Response405WithoutAllowHeader
.TargetEndpoint-Konfigurationsbeispiel mit FaultRule:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>
- Speichern Sie diese Änderungen in einer neuen Überarbeitung Ihres API-Proxys und stellen Sie die Überarbeitung bereit.
- Führen Sie die API-Aufrufe aus und prüfen Sie, ob Sie den Statuscode
405
mit demAllow
-Header.
Property konfigurieren
Option 3: Attribut im Message Processor konfigurieren, um zu verhindern, dass Apigee Edge Fehler 502 wird zurückgegeben
- Wenn Sie Nutzer der Private Cloud sind, können Sie die Property aktualisieren.
HTTP.ignore.allow_header.for.405
bistrue
, um zu verhindern, dass Apigee Edge wird ein502
-Fehler ausgelöst, auch wenn der Backend-Server mit405
antwortet ohne den HeaderAllow
: Konfigurieren des Ignorieren-Zulassungsheaders für die Property 405 in Message Processors. - Wenn Sie Public Cloud-Nutzer sind, wenden Sie sich bitte an den Apigee Edge-Support.
Spezifikation
Apigee erwartet die 405 Method Not Allowed
-Antwort vom Backend-Server entlang
mit dem Allow
-Header gemäß den folgenden Spezifikationen:
Spezifikation | |
---|---|
<ph type="x-smartling-placeholder"></ph> RFC 7231, Abschnitt 6.5.5: 405 Method Not Allowed | |
<ph type="x-smartling-placeholder"></ph> RFC 7231, Abschnitt 7.4.1: Zulassen |
Wichtige Punkte
Die empfohlene Lösung besteht darin, den Backend-Server so zu konfigurieren, dass der Statuscode 405
gesendet wird
mit dem Header „Allow
“ und halten Sie die Spezifikation ein
<ph type="x-smartling-placeholder"></ph>
RFC 7231, Abschnitt 6.5.5: 405 Method Not Allowed
Wenn Sie weitere Unterstützung vom Apigee-Support benötigen, rufen Sie auf. Diagnosedaten müssen erfasst werden.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem trotz Befolgung der obigen Anleitung weiterhin besteht, stellen Sie Folgendes zusammen: Diagnoseinformationen und wenden Sie sich dann 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
- Vollständiger
curl
-Befehl zum Reproduzieren von502 Bad Gateway
mit Fehlercodeprotocol.http.Response405WithoutAllowHeader
- Ablaufverfolgungsdatei für API-Anfragen
Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für fehlgeschlagene Anfragen
- Name der Umgebung
- API-Proxy-Bundle
- Ablaufverfolgungsdatei für API-Anfragen
NGINX-Zugriffslogs
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Dabei gilt:ORG, ORG und PORT# werden durch tatsächliche Werte ersetzt.
- Systemprotokolle für Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log