Подтвердить что ты не робот

Tomcat 7.0.43 "INFO: ошибка разбора заголовка 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? Что мне нужно изменить?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

В настоящее время у нас нет фактического решения ошибки.

Ответ 7

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

Это Tomcat bug.

Сегодня 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