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? Что мне нужно изменить?
Ответы
Ответ 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