web-dev-qa-db-ja.com

Tomcat 7.0.43「情報:HTTP要求ヘッダーの解析エラー」

Tomcat 7.0.43をwebsocketアプリケーションで使用しています。私のアプリはTomcat 7.0.42で正常に動作しますが、43を使用すると、websocketでサーバーにアクセスしようとすると次の出力が得られます。

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をクリアすると、この問題も修正できます。

15
Kimchi Man

私にとって、問題は通常予想されるHTTPヘッダーよりも大きいものを渡すことでした。 server.xmlのコネクタノードでmaxHttpHeaderSize = "1048576"属性を設定することで解決しました。

13
Philippe

同様の問題があり、リクエスト本文にデータを含むPOSTリクエストを送信し(FirefoxのRESTClientプラグインを使用)、同じメッセージを受信して​​いました。

私の場合、これはHTTPSが設定されていないローカルTomcatインスタンスでHTTPSプロトコルを使用しようとしたために発生しました。

8
nkatsar

httpsを開こうとすると問題が発生します。 SSLは使用しません。

Tomcatです バグ

今日12/02/2017Debianリポジトリの最新の公式バージョンは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

次に、jessie-backportsからTomcatを更新してインストールします

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

上記のすべてを試してみましたが、うまくいきませんでした。次に、HTTP/1.1とTomcat管理ポートの両方のTomcatポート番号を変更し、解決しました。

上記の他のソリューションが人々のために働いたと思いますが、上記のいずれかが機能しない場合は、このソリューションを試す価値があります。

みんな、ありがとう!

3
Abhishek Soni

この場合、他のURLに対してHttpServletResponse sendRedirect()を実行するカスタムfilterがアプリケーションにあるため、エラーが発生したことがわかりました。

何らかの理由で、リダイレクトが接続の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