GETリクエストの長さに制限はありますか?
RFC にはありませんが、実際には制限があります。
HTTPプロトコルは、URIの長さに事前の制限を設けません。サーバーは、提供するリソースのURIを処理できなければならず、そのようなURIを生成できるGETベースのフォームを提供する場合、無制限の長さのURIを処理できる必要があります。 URIがサーバーが処理できるよりも長い場合、サーバーは414(Request-URI Too Long)ステータスを返す必要があります(セクション10.4.15を参照)。
注:一部の古いクライアントまたはプロキシの実装ではこれらの長さが適切にサポートされない可能性があるため、サーバーは255バイトを超えるURIの長さに依存することに注意する必要があります。
この記事 かなりうまくまとめています
要約:RFCには指定された制限がないため、実装に依存します。最大2000文字(IEの制限)まで使用しても安全です。この長さに近い場所にいる場合は、URIが本当に必要なことを確認する必要があります。
URIは、データの送信に使用される場合でも読み取り可能である必要があります。
ユーザーエリクソンのリクエストに応じて、コメントとして回答を投稿します。
IE8、IE9、FF14、Opera11、Chrome20、Tomcat 6.0.32(新規インストール)、Jersey 1.13、サーバー側でさらにテストを行いました。 jQuery関数$ .getJsonとJSONPを使用しました。結果:すべてのブラウザーで最大約5400文字が許可されました。 FFとIE9は最大で約6200文字を処理しました。上記のすべてが「400 Bad request」を返しました。 400の原因をさらに調査することはしませんでした。私のケースでは約2000文字が必要だったので、見つけた最大値で問題ありませんでした。
仕様はHTTP Getリクエストの長さを制限していませんが、異なるブラウザーは独自の制限を実装しています。たとえば、Internet Explorerには2083文字の制限が実装されています。
W3Cはこれを神話としてここで明確に否認しました
contentLengthパラメーターを持つsetFixedLengthStreamingMode(int)は、HTTP要求本文の固定長を設定できます。