Tomcat 7.0.43 " INFO: parsing Error request header"

J'utilise Tomcat 7.0.43 avec une application websocket. Mon application fonctionne très bien dans Tomcat 7.0.42 mais avec 43 j'obtiens la sortie suivante quand j'essaie d'accéder à mon serveur sur websockets:

Sep 16, 2013 3:08:34 AM org.apache.coyote.http11.AbstractHttp11Processor process
INFO: Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

Mon navigateur de la console est le suivant:

WebSocket connection to 'ws://www.testapp.com/socket/notification/848df2e62fcf93e1b3?X-Atmosphere-tracking-i…Date=0&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true' failed: Unrecognized frame opcode: 5 

Voici le journal d'accès pour cette requête:

"GET /socket/notification/848df2e62fcf93e1b3?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.0.2-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true HTTP/1.1"

Qu'est-ce qui a changé dans Tomcat 7.0.43? Que dois-je changer?

31
demandé sur confile 2013-09-16 05:15:21

8 réponses

Si vous avez ce listener:

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>

sur votre serveur.xml, retirez - le et essayez. Vous ne pouvez pas utiliser un keystore si vous utilisez le connecteur APR

21
répondu ben rhouma moez 2013-11-22 12:14:38

S'il y a trop de cookies mis en cache, cela casse le serveur (la taille d'un en-tête de requête est trop grande!). Compensation les cookies peuvent résoudre ce problème.

13
répondu Kimchi Man 2015-05-14 19:03:37

pour moi, le problème était de passer dans un en-tête HTTP plus grand que prévu. Je l'ai résolu en définissant l'attribut maxHttpHeaderSize="1048576" sur le noeud de connecteur dans le serveur.XML.

12
répondu Philippe 2015-10-16 21:12:39

j'ai eu un problème similaire, j'envoyais une requête POST (utilisant le plugin RESTClient pour Firefox) avec des données dans le corps de la requête et je recevais le même message.

dans mon cas, cela s'est produit parce que j'essayais d'utiliser le protocole HTTPS dans une instance tomcat locale où HTTPS n'était pas configuré.

8
répondu nkatsar 2015-06-18 09:07:57

j'ai essayé tout ce qui précède, rien n'a fonctionné pour moi. Puis j'ai changé les numéros de port de tomcat à la fois HTTP/1.1 et le port admin de Tomcat et il a été résolu.

je vois que d'autres solutions ci-dessus ont fonctionné pour les gens, mais il vaut la peine d'essayer celle-ci si l'une des solutions ci-dessus ne fonctionne pas.

Merci à tous!

3
répondu Abhishek Soni 2016-02-12 10:23:30

Mon problème survient lorsque j'essaie d'ouvrir https. Je n'utilise pas SSL.

C'est Tomcat bug.

aujourd'Hui 12/02/2017 la dernière version officielle des dépôts Debian est Tomcat 8.0.14

la Solution est de télécharger à partir du site officiel et d'installer le plus récent paquet de Tomcat 8, 8.5, 9 ou mise à niveau vers la version la plus récente ( 8.5.x) à partir de jessie-backports



Debian 8

Ajouter / etc/apt / sources.liste

deb http://ftp.debian.org/debian jessie-backports main

puis mettre à jour et installer Tomcat à partir de jessie-backports

sudo apt-get update && sudo apt-get -t jessie-backports install tomcat8
3
répondu Piotr K. 2017-02-12 17:58:22

dans notre cas, il s'est avéré que l'erreur s'est produite parce que nous avons une coutume filter dans notre application qui fait HttpServletResponse sendRedirect() pour les autres url.

pour une raison quelconque, la redirection ne ferme pas le keep-alive statut de la connexion, d'où l'exception de temporisation.

Nous avons vérifié avec Tomcat Docs et quand nous avons désactivé l' maxKeepAliveRequests en définissant sa valeur à 1 et l'erreur n'apparaît plus.

Pour l'instant nous n'avons pas le réel la solution à l'erreur.

2
répondu Atais 2016-07-29 08:57:08

si vous ne voulez pas mettre à jour votre tomcat, Ajoutez cette ligne dans votre catalina.properties

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

ça marche pour moi http://www.zhoulujun.cn/zhoulujun/html/java/tomcat/2018_0508_8109.html

0
répondu Lujun Zhou 2018-05-08 04:19:24