web-dev-qa-db-ja.com

Jetty-9警告:badMessage:400不正な文字

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 .

一方、私はこの警告の原因を知りたいですか?これを無視したり、これにより一部のメッセージが失われたりすることはありますか?

25
Anuj Khandelwal

私は同じエラーを抱えていましたが、httpではなくhttpsをURLで使用していることが原因であることがわかりました。 (私のアプリケーションは、現時点ではhttpのみをサポートしています。)httpsをhttpに変更した後、解決しました。

47
S. Du

2017年5月更新

Jetty 9.3以上のユーザーの場合、この応答コードをより明確にするログメッセージが表示される場合があります。

詳細については、 Jetty 9.3へのアップグレード後のヘッダー解析エラー を参照してください。

元の回答

Bad Message: 400 Illegal Characterは、不正なHTTPリクエストの解析中に発生する可能性があります。

これは、クライアントに表示されるHTTPエラー応答です。

発生する可能性のあるいくつかの(すべてではない)状況。

  • EOLは「\ r\n」ではありません(CR + LF)(HTTP仕様要件)
  • HTTPメソッドトークンが認識されないか、その後に無効な空白があります
  • HTTPバージョンが認識されないか、無効な文字が含まれています
  • HTTPヘッダー名が仕様に準拠していません
  • HTTPヘッダー値が仕様に準拠していません

このメッセージは、パブリック(インターネット向け)サーバーでは一般的です。

不正なHTTPリクエストが着信しています。なぜですか?

  • 正当なHTTPクライアントにはバグがあります
  • 正当なHTTPクライアントがHTTP仕様に従っていません
  • 非HTTPクライアントがサーバーに接続しようとしました(SSL/TLS/HTTPSポートで暗号化されていないHTTPを使用しようとしたり、SMTPポートと通信しようとするSMTP/IMAP電子メールクライアントと同じような奇妙なものを使用したりするなど)
  • 悪意のあるクライアントがシステムの弱点を探ろうとしている
10
Joakim Erdfelt

このエラーは、私にとっては愚かな小さなミスによって引き起こされた可能性があります。

Localhost Jettyインスタンスでテストすると、非常によく似た400 Illegal Characterメッセージを受け取りました。それから私はその理由に気づきました。ローカルJettyのアプリケーションアドレスは次のように仮定していました。

https://localhost:8080

一方、正しいアドレスは保護されていません。

http://localhost:8080

その後は問題ありません。

8
Ben Weaver

Jettyは、ユーザーが送信したデータを含む詳細なエラーメッセージには注意を払っています。これらは攻撃の一部である可能性があるためです。

ただし、サニタイズされたデータの一部をログに記録してより適切に記録できます。 bugzillaに対応する

5
gregw

「http://」を「https://」と間違えたため、この問題に遭遇しました。

0
vincent zhang