Kein Zugriff auf einige Seiten in Adobe Experience Manager

Sie können auf einige Seiten nicht zugreifen und der folgende Fehler wird in den Protokollen angezeigt:

servletengine Bad request. com.day.j2ee.servletengine.BadRequestException: Anforderungszeile überschreitet 8192 Byte

Lösungen

Wenn die Kopfzeile von HTTP-Nachrichten an einen AEM-Server routinemäßig zu groß ist, gibt es einige Wege, um dieses Problem zu lösen.

Sie können die Größe des Kopfzeilenpuffers in AEM/CQ erhöhen.

Um die Größe des Kopfzeilenpuffers innerhalb von CQ 5.5 zu erhöhen, besorgen Sie sich das Feature-Pack NPR-2324 von Adobe. Dieses Feature Pack fügt der Day CQSE HTTP Service OSGi-Konfiguration ein Größenfeld für die Kopfzeile hinzu. Das zu ändernde Feld ist "Puffergröße von Abfragen" (org.apache.felix.http.cqse.requestBufferSize).

In AEM 5.6 ist das Feature Pack nicht notwendig. Dieselbe Konfiguration, die das Feature Pack für CQ 5.5 hinzufügt, ist bereits verfügbar.

Der Server wurde für AEM 6+ geändert. Die zu ändernde Konfiguration befindet sich in der Apache Felix Jetty Based Http Service-Konfiguration. Die zu ändernden Felder sind "Puffergröße von Abfragen" und "Puffergröße von Antworten" (org.apache.felix.http.jetty.requestBufferSize and org.apache.felix.http.jetty.responseBufferSize).

Wenn die AEM-Instanz innerhalb eines JEE-Anwendungsservers ausgeführt wird, wird der integrierte Webserver nicht verwendet. Ändern Sie die Puffergröße der Kopfzeile innerhalb der Konfigurationen des Anwendungsservers.

Obwohl die HTTP-Bezeichnung Kopfzeilen von Meldungen nicht mit einer Obergrenze versieht, ist eine andere Lösung notwendig, wenn mehr als 24k für die Puffergröße der HTTP Kopfzeile notwendig ist. Je größer die Größe des Kopfzeilenpuffers ist, desto mehr Speicher benötigt jeder offene HTTP-Socket. Hierzu zählen Sockets, die auf eine Verbindung warten. Jeder Socket erfordert, dass der Speicher für sowohl Kopfzeilen von Anfragemeldungen als auch von Antwortmeldungen ihm immer zugeordnet ist. Eine drastische Erhöhung der Größe der Kopfzeile der Meldung hat einen direkten Effekt auf die Menge des minimalen Heap-Speichers, den AEM braucht, um zu funktionieren.

Wenn die URL für Abfragen aufgrund der Größe des URL-Arguments zu groß ist, ändern Sie die Abfragen so, dass sie die POST-Methode statt der GET-Methode verwenden. Die Parameter für GET-Abfragen vergrößern die Größe der Kopfzeile der Meldung. Die Parameter für POST-Abfragen werden jedoch dem Nachrichteninhalt hinzugefügt.

Wenn die Anzahl der Cookies dazu führt, dass die Kopfzeile der Meldung zu groß ist, sollten Sie die in den Cookies gespeicherten Informationen entfernen oder die Daten auf eine andere Weise speichern. Browser-Web-Speicherobjekte vergrößern die Kopfzeilen von Meldungen nicht. Der Client Context innerhalb von AEM kann im Laufe der Zeit eine große Menge an gespeicherten Daten benötigen. Standardmäßig verwenden spätere Versionen von AEM Web-Speicherobjekte für Client Context-Daten. Ältere Versionen bestätigen die Client Context-Daten mithilfe von Cookies. Informationen, wie Sie die Art und Weise der Datenspeicherung ändern können, finden Sie unter "Client Context im Detail".

Weitere Informationen

AEM/CQ hat einen Puffer für den Inhalt der Kopfzeile von HTTP-Abfragen. Der Inhalt der HTTP-Abfrage und der Antwortkopfzeilen muss in den Puffer passen. Bei CQ 5.5 und AEM 5.6 ist die Standardgröße dieses Puffers 8k. Die Standardgröße des Kopfzeilenpuffers ist größer als in AEM 6.

Alle HTTP-Meldungen haben zwei Teile, die Kopfzeile der Meldung und den Nachrichtentext.

Der Nachrichtentext enthält alle Informationen, die wir als Inhalt der Meldung betrachten. Beispiele für den Nachrichtentext sind der HTML-Text einer Webseite oder die binäre Kopie eines Bilds. Bei HTTP-Meldungen, die POST-Abfragen verwenden, kann der Nachrichtentext die Parameter der POST-Abfrage enthalten.

Die Kopfzeile enthält Informationen zur Abfrage oder Antwort. Dazu gehören die verwendete HTTP-Methode und die angeforderte URL. Bei HTTP-Antwortmeldungen ist der HTTP-Status für die Antwort ebenfalls enthalten. Weitere Informationen zur HTTP-Meldung können in Form von Schlüssel/Wert-Paaren, die Kopfzeilenfelder genannt werden, enthalten sein. Browser-Cookies werden auch als Schlüssel/Wert-Paare in Kopfzeilen von Meldungen gesendet und empfangen.

Die Kopfzeile einer Meldung soll sofort nach Erhalt ausgewertet werden und wird als Ganzes verarbeitet, bevor der Server oder der Browser auf den Meldungsinhalt reagiert. AEM gibt die Kopfzeile der Meldung in einen Puffer ein, der groß genug sein muss, um die gesamte Kopfzeile aufzunehmen. Wenn der Inhalt der Kopfzeile einer HTTP-Meldung zu groß ist, um in den Puffer zu passen, schlägt die Meldung fehl.

Es gibt einige Bedingungen, die dazu führen können, dass die Kopfzeile der HTTP-Meldung zu groß ist, um in den Puffer des Servers zu passen. Jede dieser Bedingungen kann alleine oder mit anderen Bedingungen dazu führen, dass das HTTP zu groß ist.

Die URL in einer Abfrage kann für den Puffer zu lang sein. Dies kann beispielsweise passieren, wenn eine Abfrage hunderte von URL-Argumenten hat. Oder es kann vorkommen, wenn einzelne URL-Argumente sehr groß sind.

Die in Cookies gespeicherten Informationen können sich bis zu dem Punkt vergrößern, an dem die Kopfzeile nicht mehr in den Kopfzeilenpuffer des Servers passt. Dieses Problem kann durch viele kleinere Cookies oder wenige äußerst große Cookies verursacht werden.

Entwickler können benutzerdefinierte Kopfzeilenfelder erstellen. Häufig verwenden Anmeldeimplementierungen benutzerdefinierte Kopfzeilenfelder. Da die Größe der Werte in den Kopfzeilenfeldern der HTTP-Bezeichnung nicht beschränkt ist, können Entwickler Kopfzeilenfelder mit großem Inhalt erstellen.

Siehe auch

HTTP-Meldungsbezeichnung
HTTP-Webspeicherbezeichnung

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie