CometD-3.0.1でjetty-9.2.2を使用しています。セットアップ中に以下の警告が表示されます。 1日に約4,5回来ます。
2014-08-28 08:50:53.712:WARN:oejh.HttpParser:qtp607635164-15194: badMessage:
400 Illegal character for HttpChannelOverHttp@5946f125{r=1,a=IDLE,uri=-}
警告メッセージからデバッグできる詳細はありません。詳細な警告を提供するために、リクエストをすでに記録しています https://bugs.Eclipse.org/bugs/show_bug.cgi?id=443049 .
一方、私はこの警告の原因を知りたいですか?これを無視したり、これにより一部のメッセージが失われたりすることはありますか?
私は同じエラーを抱えていましたが、httpではなくhttpsをURLで使用していることが原因であることがわかりました。 (私のアプリケーションは、現時点ではhttpのみをサポートしています。)httpsをhttpに変更した後、解決しました。
2017年5月更新
Jetty 9.3以上のユーザーの場合、この応答コードをより明確にするログメッセージが表示される場合があります。
詳細については、 Jetty 9.3へのアップグレード後のヘッダー解析エラー を参照してください。
元の回答
Bad Message: 400 Illegal Character
は、不正なHTTPリクエストの解析中に発生する可能性があります。
これは、クライアントに表示されるHTTPエラー応答です。
発生する可能性のあるいくつかの(すべてではない)状況。
このメッセージは、パブリック(インターネット向け)サーバーでは一般的です。
不正なHTTPリクエストが着信しています。なぜですか?
このエラーは、私にとっては愚かな小さなミスによって引き起こされた可能性があります。
Localhost Jettyインスタンスでテストすると、非常によく似た400 Illegal Characterメッセージを受け取りました。それから私はその理由に気づきました。ローカルJettyのアプリケーションアドレスは次のように仮定していました。
https://localhost:8080
一方、正しいアドレスは保護されていません。
http://localhost:8080
その後は問題ありません。
Jettyは、ユーザーが送信したデータを含む詳細なエラーメッセージには注意を払っています。これらは攻撃の一部である可能性があるためです。
ただし、サニタイズされたデータの一部をログに記録してより適切に記録できます。 bugzillaに対応する
「http://」を「https://」と間違えたため、この問題に遭遇しました。