Tomcatの最大URL長は?


43

そして、それは構成可能ですか?たとえば、200Kのクエリパラメータを持つURLが含まれるサーブレットに正常に通過するようにTomcatを設定できますか?

はい、大量のデータがある場合はPOSTを使用する必要があることを知っています。これは、この特定のケースではあまり快適ではないオプションです。含まれているアプリケーション(検索エンジン)は、GET要求が検索を実行することを期待しています。

回答:


60

tomcat / conf / server.xmlのHTTP / 1.1コネクタエントリを編集し、maxHttpHeaderSize = "65536"を追加して、デフォルトの最大値である8Kから64Kに増やすことができます。必要に応じてこの数を増やすことができると思いますが、現時点では64Kで十分なので、試してはいません。

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />

3
非常に便利で、Solrの問題を解決しました。server.xml気付かずに、設定のデフォルトの8192の制限をスクラッチしているようで、突然ヒットしました。痛々しい落とし穴:それについて何もログに記録されていませんでした。接続は静かに切断されました(HTTPステータスはもう思い出せません)。以前にtomcat.apache.org/tomcat-5.5-doc/config/http.htmlのドキュメントを見つけましたがmaxHttpHeaderSize、その名前や説明をGETリクエストクエリパラメータ自体に関連付けることもしませんでした。
マーク

また、Solrでも同じ制限に達しましたが、空白の白いページに過ぎません... :( maxHttpHeaderSizeがうまくいきました。
user85116Sep

maxHttpHeaderSize = "100000"は不可能だと思います。1024を掛ける必要があります。maxHttpHeaderSize= "1048576"を1024 * 1024に変更しましたが、まだ機能していません。

3
受け入れられた答え、「maxHttpHeaderSize = "65536" は機能しません。Tomcat のバグのため、以前は機能していました。URL/ URIはHTTPヘッダーとは無関係です。
Fuad Efendi

1
@FuadEfendiその時の最大サイズは何ですか?
mjaggard

5

MicrosoftがIEの最大長のサポートページについて報告しているため、HTTP GET要求の長さはRFC2616によって強制されません

そのため、GETの最大長はクライアント(ブラウザ)関連の問題です。あなたのアプリが人々によって使用される場合、特定のブラウザを使用することを強制することができます、あなたは単にこのブラウザがサポートする長さを見つけることができます。

いずれの場合でも、クエリ文字列(サーバーサイドアプリのパラメーターをもたらすリクエストの一部、最終的にリクエストに含まれる「?」に続く部分)について、ブラウザー関連の問題についてWikypediaページを参照することをお勧めします。

もちろん、Tomcatはサーバー側にも制限を設けます。RFCによれば:

サーバーは、提供するリソースのURIを処理できなければならず、そのようなURIを生成できるGETベースのフォームを提供する場合、無制限の長さのURIを処理できる必要があります。URIがサーバーが処理できるよりも長い場合、サーバーは414(Request-URI Too Long)ステータスを返す必要があります(セクション10.4.15を参照)。

そのため、Tomcatに制限があるかどうかを簡単にテストし、この制限がエラーを与える非常に長いリクエストから始めて半分だけ異なるリクエストを使用していることを簡単に調べることができます。次に、二分法を使用して正確な値をすばやく見つけます。


アルバート、Tomcatにはすぐに使える制限(8Kのようなもの)があることを知っていました。構成すら克服できない限界があるのだろうかと思いました。
マイケルガンドラッハ

2

AJPコネクタの場合、packetSize属性を調整する必要があります。

<Connector port="8009" 
    protocol="AJP/1.3" 
    packetSize="65536" />

1
mod_proxyを使用している場合ProxyIOBufferSize 65536 は、httpdの設定も設定する必要があります。
自殺

1

Tomcatサーバー(.. \ Tomcat 6.0 \ conf \ server.xml)で構成を変更できます

<コネクタport = "8983" maxHttpHeaderSize = "100000" protocol = "HTTP / 1.1" connectionTimeout = "20000" redirectPort = "8443" />


コードをフォーマットし、なぜOPの質問に答えるのかを説明することで、この回答を改善できます。
-james.garriss
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.