Impossible d'accéder à certaines pages dans Adobe Experience Manager

Vous ne pouvez pas accéder à certaines pages et l’erreur suivante s’affiche dans les journaux :

servletengine Bad request. com.day.j2ee.servletengine.BadRequestException : la ligne de requête dépasse 8192 octets.

Solutions

Si l’entête des messages HTTP à un serveur AEM est régulièrement trop volumineux, il est possible de résoudre le problème.

Vous pouvez augmenter la taille du tampon d’entête dans AEM/CQ.

Pour augmenter la taille de la mémoire tampon d'entête dans le CQ 5.5, obtenez le pack NPR-2324 d'Adobe. Ce pack de fonctionnalités ajoute un champ de taille de tampon d’entête à la configuration Day CQSE HTTP Service OSGi. Le champ à modifier est Taille du tampon de demande (org.apache.felix.http.cqse.requestBufferSize).

Dans AEM 5.6, le pack n'est pas nécessaire. La même configuration proposée par le pack CQ 5.5 est déjà disponible.

Le serveur a été modifié pour AEM 6+. La configuration à modifier se trouve dans la configuration du Apache Felix Jetty Based Http Service. Les champs à modifier sont Taille du tampon de demande et Taille du tampon de réponse (org.apache.felix.http.jetty.requestBufferSize et org.apache.felix.http.jetty.responseBufferSize).

Si l’instance AEM est exécutée dans un serveur d’applications JEE, elle n’utilise pas le serveur Web intégré. Modifiez la taille de l’entête du tampon dans les configurations du serveur d’application.

Bien que la spécification HTTP ne fixe pas de limite maximale pour les entêtes de message, si plus de 24k est nécessaire pour la taille de la mémoire tampon de l'entête HTTP, une autre solution est nécessaire. Plus la taille du tampon d'entête est grande, plus la mémoire nécessaire à chaque support HTTP ouvert sera importante. Cela inclut les supports en attente d’une connexion. Chaque support nécessite que la mémoire pour les entêtes de message de requête et les entêtes de messages de réponse lui soit affectée à tout moment. L’augmentation de la taille de l’entête du message a un effet direct sur la quantité de mémoire minimale à exécuter par AEM.

Si l’URL des requêtes est trop grande en raison de la taille des arguments d’URL, modifiez les requêtes pour utiliser la post-méthode au lieu de GET. Les paramètres des requêtes GET sont ajoutés à la taille de l’entête du message. Toutefois, les paramètres des post-demandes sont ajoutés au contenu du message.

Si la taille des cookies rend l’entête du message trop volumineux, pensez à éliminer les informations stockées dans les cookies ou à stocker les données d’une autre manière. Les objets de stockage Web n'influent pas sur la taille des entêtes de message. Le contexte du client dans AEM peut, au fil du temps, nécessiter l'enregistrement d’une grande quantité de données. Par défaut, les versions ultérieures de AEM utilisent des objets de stockage Web pour les données de contexte du client. Les versions plus anciennes valident les données du contexte client à l’aide de cookies. Pour en savoir plus sur le stockage des données, consultez les informations sur le Contexte du client.

Informations supplémentaires

AEM/CQ dispose d’un tampon pour le contenu de l’entête de requête HTTP. Le contenu des entêtes de requête et de réponse HTTP doit tenir dans la mémoire tampon. Dans CQ 5.5 et AEM 5.6, la taille par défaut de cette mémoire tampon est de 8o. La taille par défaut du tampon d'entête est plus grande dans AEM 6.

Tous les messages HTTP ont deux parties, l’entête du message et le corps du message.

Le corps du message contient toutes les informations que l'on considère comme le contenu du message. Un exemple de corps de message serait le texte HTML d’une page Web ou le code binaire d’une image. Pour les messages HTTP utilisant des post-requêtes, le corps du message peut contenir les paramètres de la demande de publication.

L’entête contient des informations sur la requête ou la réponse. Ceci inclut la méthode HTTP utilisée et l’URL demandée. Pour les messages de réponse HTTP, le statut HTTP de la réponse est également inclus. D’autres informations sur le message HTTP peuvent être incluses sous la forme de paires clé/valeur appelées champs d’entête. Les cookies de navigateur sont également envoyés et reçus en tant que paires clé/valeur dans les entêtes de message.

Une entête de message est censé être évalué à la réception et est traité dans son ensemble avant que le serveur ou le navigateur agisse sur le contenu du message. AEM lit l’entête de message HTTP dans un tampon qui doit être suffisamment grand pour contenir l’entête complète. Si le contenu de l'entête d'un message de HTTP est trop long pour tenir dans la mémoire tampon, le message échoue.

Il est possible que l’entête du message HTTP soit trop volumineuse pour tenir dans la mémoire tampon du serveur. Chacune de ces conditions peut être en soi ou avec d’autres conditions, ce qui provoque une trop grande taille du HTTP.

L'URL d'une requête peut être trop longue pour la mémoire tampon. Cela peut se produire, par exemple, lorsqu’une requête comporte des centaines d’arguments d’URL. Cela peut également se produire lorsque des arguments d’URL sont importants.

Les informations enregistrées dans les cookies peuvent s’étendre au point où l’entête ne s’ajuste plus au tampon d’entête du serveur. Ce problème peut être dû à la présence de nombreux petits cookies ou à quelques cookies très volumineux.

Les développeurs peuvent créer des champs d’entête personnalisés. Les implémentations d’authentification uniques utilisent souvent des champs d’entête personnalisés. Comme la taille des valeurs dans les champs d’entête n’est pas limitée dans la spécification HTTP, les développeurs peuvent créer des champs d’entête avec une grande quantité de contenu.

Voir aussi

Spécification de message HTTP
Spécification de stockage web HTTP

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne