9

メッセージを送信するjava.net.HttpUrlConnectionを備えたTomcatサーバーとJavaクライアントがあります。通常はすべて正常に動作しますが、クライアントが送信するいくつかのリクエストは 400 http エラーで応答されます。

問題は、Tomcat ログに何も表示されないことです。.level=fine やその他のログ レベルの変更を入れようとしても、例外やエラーは表示されませんでした。

リクエストのエンコーディングが悪いなどの疑いがありますが、Tomcatは手がかりを与えてくれません。

ちなみにURLはOKです。また、リクエストはサーバーに到達しますが、サーブレットには到達しません。tomcat はメッセージを受け取り、それが悪いと宣言し、何が悪いのかをログに記録しないようです。

400 の理由を確認する方法を考えられる人はいますか? ありがとうございました

4

3 に答える 3

17

私は最終的に理解しました-合計ヘッダーのサイズ + OutputStream に書き込まれたデータのサイズが非常に大きいことがわかりました-したがって、Tomcat HTTPコネクタで定義しました:

コネクタ ポート="8080" プロトコル="HTTP 1/1" maxPostSize="10485760" maxHttpHeaderSize="10485760" /

残念なことに、Tomcat はこれを教えてくれませんでした。推測するしかありませんでした。これをバグとして報告します。

ありがとうございました

于 2013-09-16T08:58:04.880 に答える
1


実際、これは Internet Explorer 11 での「http 400 bad request」エラーの解決策でもありました。

maxHttpHeaderSize="10485760" maxPostSize="10485760" 

Tomcat の server.xml の Connector ノードに。

IE11 の私の ajax-request (extjs) は、Tomcat 6 のデフォルト (8192 = 8 KB) の最大 http ヘッダー サイズよりも大きな要求ヘッダーを使用しているようです。

IE10 と Chrome では、この問題は発生しませんでした。

于 2016-09-02T09:18:32.063 に答える