it-roy-ru.com

Tomcat 7.0.43 "ИНФОРМАЦИЯ: Ошибка синтаксического анализа заголовка HTTP-запроса"

Я использую Tomcat 7.0.43 с приложением websocket. Мое приложение отлично работает в Tomcat 7.0.42, но с 43 я получаю следующий вывод при попытке получить доступ к своему серверу через веб-сокеты:

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.

Моя консоль браузера показывает следующее: 

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 

Вот журнал доступа для этого запроса: 

"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"

Что изменилось в Tomcat 7.0.43? Что я должен изменить?

32
confile

Если у вас есть этот слушатель:

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

на вашем server.xml удалите его и попробуйте . Вы не можете использовать хранилище ключей, если используете разъем APR 

20
ben rhouma moez

Если кэшировано слишком много файлов cookie, это нарушает работу сервера (размер заголовка запроса слишком велик!). Очистка файлов cookie также может решить эту проблему.

14
Kimchi Man

Для меня проблема заключалась в передаче большего, чем обычно ожидалось, заголовка HTTP. Я решил это, установив атрибут maxHttpHeaderSize = "1048576" на узле соединителя в файле server.xml.

12
Philippe

У меня была похожая проблема, я отправлял запрос POST (используя плагин RESTClient для Firefox) с данными в теле запроса и получал то же сообщение.

В моем случае это произошло потому, что я пытался использовать протокол HTTPS в локальном экземпляре Tomcat, где HTTPS не был настроен.

8
nkatsar

Я перепробовал все вышеперечисленное, у меня ничего не получалось .. Затем я изменил номера портов Tomcat и HTTP/1.1, и административный порт Tomcat, и это было решено.

Я вижу, что другие решения выше работали для людей, но стоит попробовать это, если что-то из вышеперечисленного не работает.

Спасибо всем!

3
Abhishek Soni

Моя проблема возникает, когда я пытаюсь открыть https. Я не использую SSL.

Это Tomcat ошибка .

Сегодня 12/02/2017 новейшей официальной версией из репозиториев Debian является Tomcat 8.0.14

Решением является загрузка с официального сайта и установка новейшего пакета Tomcat 8, 8.5, 9 или обновление до новейшей версии (8.5.x) из jessie-backports

Debian 8

Добавить в /etc/apt/sources.list

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

Затем обновите и установите Tomcat из jessie-backports.

Sudo apt-get update && Sudo apt-get -t jessie-backports install Tomcat8
3
Piotr K.

В нашем случае оказалось, что ошибка произошла из-за того, что в нашем приложении есть пользовательский filter, который выполняет HttpServletResponse sendRedirect() для другого URL.

По какой-то причине перенаправление не закрывает состояние соединения keep-alive, следовательно, исключение тайм-аута.

Мы проверили с помощью Tomcat Docs и когда мы отключили maxKeepAliveRequests, установив для него значение 1, и ошибка перестала отображаться.

На данный момент у нас нет фактического решения ошибки.

2
Atais

Если вы не хотите обновлять свой Tomcat, Добавьте эту строку в свой catalina.properties

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

Это работает для меня http://www.zhoulujun.cn/zhoulujun/html/Java/Tomcat/2018_0508_8109.html

0
Lujun Zhou