431 Anfrageheader-Felder zu groß – TooBigHeaders

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Symptom

Die Clientanwendung erhält den HTTP-Statuscode 431 Request Header Fields Too Large mit dem Fehlercode protocol.http.TooBigHeaders als Antwort für die API Anrufe.

Fehlermeldung

Die Clientanwendung ruft den folgenden Antwortcode ab:

HTTP/1.1 431 Request Header Fields Too Large

Außerdem wird möglicherweise die folgende Fehlermeldung angezeigt:

{
   "fault":{
      "faultstring":"request headers size exceeding 25,600",
      "detail":{
         "errorcode":"protocol.http.TooBigHeaders"
      }
   }
}
<ph type="x-smartling-placeholder">

Mögliche Ursachen

Dieser Fehler tritt auf, wenn die Gesamtgröße aller Anfrage-Header, die von der Clientanwendung an Apigee Edge als Teil der HTTP-Anfrage ist größer als die zulässiges Limit in Apigee Edge gemäß <ph type="x-smartling-placeholder"></ph> RFC 6585, Abschnitt 5: 431 Request Header Fields Too Large

Mögliche Ursachen für diesen Fehler:

Ursache Beschreibung Anleitungen zur Fehlerbehebung gelten für
Die Größe der Anfrageheader überschreitet das zulässige Limit Die Gesamtgröße aller Header, die von der Clientanwendung als Teil der HTTP-Anfrage an Apigee Edge ist größer als das zulässige Limit in Apigee Edge. 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:

  1. <ph type="x-smartling-placeholder"></ph> Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einem Rolle.
  2. Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.

  3. Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
  4. Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
  5. Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.
  6. Wählen Sie eine Zelle mit dem Fehlercode protocol.http.TooBigHeaders und Statuscode 431, wie unten gezeigt:

    ( Größeres Bild ansehen)

  7. Sie sehen die Informationen zum Fehlercode protocol.http.TooBigHeaders wie unten dargestellt:

    ( Größeres Bild ansehen)

  8. Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage:

    ( Größeres Bild ansehen)

  9. Im Fenster Logs werden die folgenden Details angezeigt:

    • Statuscode: 431
    • Fehlerquelle: apigee
    • Fehlercode: protocol.http.TooBigHeaders.
    • Anfragelänge(Byte): 32150 (> 25 KB)
  10. Wenn die Fehlerquelle den Wert apigee oder MP hat, Fehlercode hat den Wert protocol.http.TooBigHeaders und Anfragelänge mehr als 25 KB beträgt, bedeutet dies, dass die höhere Anfrageheader, die von der Clientanwendung im Rahmen der HTTP-Anfrage gesendet werden, als die zulässiges Limit in Apigee. <ph type="x-smartling-placeholder">

Trace-Tool

<ph type="x-smartling-placeholder">

NGINX

<ph type="x-smartling-placeholder">

So diagnostizieren Sie den Fehler mithilfe von NGINX-Zugriffslogs:

  1. Als Private Cloud-Nutzer können Sie NGINX-Zugriffslogs für folgende Zwecke verwenden: die wichtigsten Informationen zu HTTP-431-Fehlern ermitteln.
  2. Prüfen Sie die NGINX-Zugriffslogs:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Dabei gilt:ORG, ENV und PORT# werden durch tatsächliche Werte ersetzt.

  3. Suchen, um zu sehen, ob es während eines bestimmten Zeitraums 431 Fehler gibt (wenn das Problem in der Vergangenheit aufgetreten ist) oder wenn immer noch Anfragen mit 431
  4. Wenn Sie 431-Fehler mit dem X-Apigee-Fehlercode finden dem Wert von protocol.http.TooBigHeaders entspricht, dann ermitteln Sie, Wert von X-Apigee-fault-source..

    Der obige Beispieleintrag aus dem NGINX-Zugriffsprotokoll enthält die folgenden Werte für X-Apigee-fault-code und X-Apigee-fault-code

    Antwortheader Wert
    X-Apigee-fault-code protocol.http.TooBigHeaders
    X-Apigee-fault-source MP

    Beachten Sie die Länge der Anfrage: 40159 (40 KB ist größer als 25 KB, das zulässige Limit für Anfrageheader in Apigee Edge)

    Im obigen Beispiel-Logeintrag hat X-Apigee-fault-source den Wert apigee oder MP hat der X-Apigee-fault-code den Wert protocol.http.TooBigHeaders und die Anfragelänge beträgt 40 KB, was größer als das zulässige Limit in Apigee – 25 KB Dies weist eindeutig darauf hin, Gesamtgröße aller Anfrageheader, die von der Clientanwendung als Teil von HTTP gesendet werden Anfrage hat das zulässige Limit von 25 KB in Apigee Edge überschritten.

    <ph type="x-smartling-placeholder">

Ursache: Die Größe der Anfrageheader überschreitet das zulässige Limit

Diagnose

  1. Bestimmen Sie den Fehlercode, die Fehlerquelle und die Größe der Anfragelänge für die bei der Verwendung von API-Monitoring oder NGINX-Zugriffsprotokollen, wie unter Häufige Diagnoseschritte.
  2. Wenn die Fehlerquelle den Wert apigee oder MP hat, hat der Fehlercode den Wert protocol.http.TooBigHeaders, und die Anfragelänge mehr als 25 KB beträgt, wird dies gibt an, dass die von der Clientanwendung an Apigee gesendete Anfragegröße größer ist als die zulässiges Limit in Apigee Edge.
  3. Sie können mit einer der folgenden Methoden überprüfen, ob die Größe des Anfrageheaders die maximal zulässige Größe von 25 KB überschritten hat. die folgenden Methoden verwenden:

    Fehlermeldung

    So führen Sie eine Validierung mithilfe der Fehlermeldung durch:

    Wenn Sie Zugriff auf die vollständige Fehlermeldung von Apigee Edge haben, dann Weitere Informationen finden Sie im faultstring. faultstring gibt an, dass Die Gesamtgröße der Anfrage-Header überschreitet die zulässige Grenze von 25 KB.

    Beispiel für eine Fehlermeldung:

    "faultstring":"request headers size exceeding 25,600"
    

    Tatsächliche Anfrage

    So validieren Sie die Anfrage anhand der tatsächlichen Anfrage:

    Wenn Sie Zugriff auf die eigentliche Anfrage der Clientanwendung haben, Führen Sie dann die folgenden Schritte aus:

    1. Überprüfen Sie die Größe der in der Anfrage übergebenen Header.
    2. Wenn Sie feststellen, dass die Gesamtgröße der Überschriften größer ist als die zulässigen Grenzwert in Apigee Edge, um die Ursache des Problems zu finden.

      Beispielanfrage:

      curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
      

      Im obigen Fall ist die Gesamtgröße der Header header0, header1, header2 und header3 größer als 25 KB ist, d. h. mehr als 25.000 ASCII-Zeichen (Byte) enthalten

      Wenn Sie einen anderen Client verwenden, können Sie die Clientprotokolle die Größe der Anfragezeile zu ermitteln, die an Apigee Edge gesendet wird.

    Message Processor-Logs

    So validieren Sie mit Message Processor-Logs:

    <ph type="x-smartling-placeholder">

    Wenn Sie ein Private Cloud-Nutzer sind, können Sie Message Processor-Logs verwenden, um wird geprüft, ob die Größe der Anfrage-Header die zulässiges Limit in Apigee Edge.

    1. Prüfen Sie die Message Processor-Logs:

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. Suchen Sie nach 431-Fehlern während eines bestimmten Dauer (wenn das Problem in der Vergangenheit aufgetreten ist) oder ob es Anfragen schlagen immer noch mit 431 fehl. Sie können die folgenden Suchzeichenfolgen verwenden.
      grep -ri "exceeding"
      
      grep -ri "RequestHeadersTooLarge"
      
    3. Zeilen von system.log sehen in etwa so aus:
      2021-07-27 08:30:28,419  NIOThread@1 ERROR ADAPTORS.HTTP.FLOW -
      AbstractRequestListener.onException() :
      Request:GET, uri:/test/, message Id:null,
      exception:com.apigee.errors.http.user.RequestHeadersTooLarge{
      code = protocol.http.TooBigHeaders, message = request headers size
      exceeding 25,600, associated contexts = []}, context:Context@9c5903
      input=ClientInputChannel(SSLClientChannel[Accepted:
      Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130
      useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms  lastIO=0ms
      isOpen=true)
      

      Der Text message = request headers size exceeding 25,600 im Feld der obigen Fehlermeldung zeigt an, dass die Gesamtgröße der Anfrageheader mehr als 25 KB. Daher wirft Apigee Edge die Ausnahme com.apigee.errors.http.user.RequestHeadersTooLarge und Retouren Statuscode 431 mit Fehlercode protocol.http.TooBigHeaders an Client-Anwendungen.

Auflösung

<ph type="x-smartling-placeholder">

Größe korrigieren

Option 1 [empfohlen]: Korrigieren Sie die Clientanwendung so, dass keine Anfrageheader mit Gesamtgröße über dem zulässigen Grenzwert

<ph type="x-smartling-placeholder">
  1. Analysieren Sie den Grund für das Senden eines Anfrageheaders durch den Client Größe, wodurch die Gesamtgröße des Headers über dem zulässigen Grenzwert liegt, der in Beschränkungen:
  2. Wenn dies nicht erwünscht ist, ändern Sie Ihre Clientanwendung so, dass sie Anfrageheader, deren Größe unter dem zulässigen Limit liegt.

    Im oben beschriebenen Beispiel können Sie das Problem beheben, indem Sie den langen Header übergeben. value als Teil des Anfragetexts/der Nutzlast verwendet werden:

    curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'
    
  3. Wenn dies wünschenswert ist und Sie einen Header senden möchten, der das zulässige Limit überschreitet, gehen Sie zum zur nächsten Option.

CwC

Option 2 : CwC-Attribut verwenden, um das Limit für die Anfragezeilen zu erhöhen

<ph type="x-smartling-placeholder">

Apigee bietet eine CwC können Sie das Limit für die Anfragezeile erhöhen. Details finden Sie unter <ph type="x-smartling-placeholder"></ph> Limit für Anfragezeilen im Message Processor festlegen

<ph type="x-smartling-placeholder">

Limits

Apigee erwartet, dass die Clientanwendung und der Backend-Server keine Anfrage-/Antwort-Header, deren Größe laut Dokumentation das zulässige Limit überschreitet für die Größenbeschränkung für Anfrage-/Antwort-Header in Apigee Edge-Beschränkungen.

  1. Wenn Sie ein Public Cloud-Nutzer sind, ist die Höchstgrenze für Die Größe der Anfrage- und Antwortheader entspricht den Angaben unter Größe des Anfrage-/Antwortheaders in Apigee Edge-Limits.
  2. Wenn Sie ein Private Cloud-Nutzer sind, haben Sie möglicherweise das Standardhöchstwert Größenbeschränkung für Anfrage- und Antwortheader (auch wenn dies nicht empfohlen wird). Sie können die maximale Größe für den Anfrageheader ermitteln, indem Sie die Anweisungen unter So prüfen Sie das aktuelle Limit.

Wie kann ich das aktuelle Limit prüfen?

<ph type="x-smartling-placeholder">

In diesem Abschnitt wird erläutert, wie du bestätigst, dass die Property HTTPRequest.headers.limit wurde mit einem neuen Wert in den Message Processors aktualisiert.

  1. Suchen Sie auf dem Message Processor-Computer nach der Eigenschaft HTTPRequest.headers.limit im /opt/apigee/edge-message-processor/conf und wechseln Sie zu sehen Sie, welcher Wert festgelegt wurde:
    grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
    
  2. Das Ergebnis des obigen Befehls sieht wie folgt aus:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
    
  3. In der Beispielausgabe oben ist das Attribut HTTPRequest.headers.limit wurde mit dem Wert 25k in http.properties festgelegt.

    Dies gibt an, dass das in Apigee for Private konfigurierte Limit für die Größe des Anfrageheaders Cloud ist 25 KB groß.

Spezifikation

Apigee Edge erwartet, dass die Clientanwendung keine großen Header als Teil des Falls die Anfrage Header enthält, deren Gesamtgröße das angegebene Limit überschreitet, Apigee löst 431 Request Header Fields Too Large gemäß der folgenden RFC aus Spezifikationen:

Spezifikation
<ph type="x-smartling-placeholder"></ph> RFC 6585, Abschnitt 5: 431 Request Header Fields Too Large

Wenn Sie weitere Unterstützung vom Apigee-Support benötigen, gehen Sie zu Diagnoseinformationen müssen erfasst werden.

Erfassen von Diagnoseinformationen erforderlich

Erfassen Sie die folgenden Diagnoseinformationen 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
  • Vollständiger curl-Befehl zum Reproduzieren des 431-Fehlers
  • 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 Organisation
  • Name der Umgebung
  • API-Proxy-Bundle
  • Ablaufverfolgungsdatei für fehlgeschlagene API-Anfragen
  • Vollständiger curl-Befehl zum Reproduzieren des 431-Fehlers
  • NGINX-Zugriffslogs /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Wo:ORG, ENV und PORT# werden ersetzt durch tatsächliche Werte.

  • Systemprotokolle des Message Processor /opt/apigee/var/log/edge-message-processor/logs/system.log