[解決済み] クエリ文字列の最大長を教えてください。
質問
ブラウザ依存ですか? また、ウェブスタックによって、リクエストから取得できるデータ量の上限が異なるのでしょうか?
解決方法は?
RFC 2616 (Hypertext Transfer Protocol - HTTP/1.1) では、クエリ文字列の長さに制限はないとされています (セクション 3.2.1)。 RFC3986 (Uniform Resource Identifier - URI)でも制限はないとされていますが、DNSの制限によりホスト名は255文字に制限されていることが示されています(2.3.3項)。
仕様では最大長を規定していませんが、ウェブブラウザやサーバソフトウェアによって現実的な制限が課せられます。残念ながらオリジナルのサイトではもう利用できないが(怪しげなローンサイトにつながる)、次のサイトで見られる調査に基づいている。 Boutell.comのインターネットアーカイブ :
-
Microsoft Edge(ブラウザー)
81578文字程度が限界のようです。参照 Microsoft EdgeのURL長さの制限 -
クローム
停止する 表示 は64k文字で終了しますが、100k文字以上のURLは提供可能です。それ以上のテストは行っていない。 -
Firefox(ブラウザー)
Windows版Firefox 1.5.xで65,536文字を超えるとロケーションバーにURLが表示されなくなる。ただし、長いURLは動作する。100,000文字以降のテストは行っていません。 -
サファリ(ブラウザー)
少なくとも80,000文字以上で動作します。それ以上のテストは試していません。 -
オペラ(ブラウザー)
少なくとも19万文字以上で動作します。190,000文字でテストを中止。Opera 9 for Windowsは、完全に編集可能な文字列を表示し続けました。 190,000文字でもロケーションバーにコピー&ペースト可能なURLが表示されます。 -
Microsoft Internet Explorer(ブラウザー)
マイクロソフト社によると、Internet ExplorerにおけるURLの最大長は2,083文字で、URLのパス部分は2,048文字以内とのことです。これより長いURLを使用しようとすると、Internet Explorerで明確なエラーメッセージが表示されました。 -
Apache (サーバー)
ウェブブラウザの最大URL長を測定する初期の試みは、サーバのURL長制限の約4000文字にぶつかり、それ以降はApacheが "413 Entity Too Large" エラーを発生させるというものでした。Red Hat Enterprise Linux 4 で見つかった最新の Apache のビルドが使用されました。Apache の公式ドキュメントでは、リクエストの個々のフィールドに対する 8,192 バイトの制限にしか言及していません。 -
マイクロソフト インターネット インフォメーション サーバー (サーバー)
デフォルトの制限は16,384文字です(そう、MicrosoftのWebサーバーはMicrosoftのWebブラウザよりも長いURLを受け付けるのです)。これは設定可能です。 -
Perl HTTP::Daemon (サーバ)
8,000バイトまでなら動作します。PerlのHTTP::DaemonモジュールでWebアプリケーションサーバーを構築する場合、すべてのHTTPリクエストヘッダの合計サイズに16,384バイトの制限が発生します。これにはPOSTメソッドのフォームデータ、ファイルアップロードなどは含まれませんが、URLは含まれます。実際には、URLが8,000文字よりかなり長い場合、413エラーになりました。この制限は簡単に取り除くことができます。Daemon.pmで16x1024の出現箇所をすべて探し、より大きな値に置き換えてください。 もちろん、これはサービス拒否攻撃への露出を増やすことになります。
関連
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み] PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?
-
[解決済み] Javascriptオブジェクトのクエリ文字列エンコーディング
-
[解決済み] Flaskのルートでクエリ文字列にアクセスする方法は?
-
[解決済み] クエリ文字列の中で配列を渡すには?
-
[解決済み] ブラウザの「F5」や「Ctrl + F5」によるリフレッシュはどのようなリクエストを発生させるのでしょうか?
-
[解決済み] 一般的なブラウザでは、AJAX(XmlHttpRequest)の同時リクエストはいくつまで可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Google Chrome用Webフロントエンド runtime.lastErrorのチェックが外れています。接続を確立できませんでした。受信側が存在しない
-
Chrome 91でSameSite by defaultのクッキーが削除された後の解決策、クッキーを持ち運べないChromeのクロスドメインPOSTリクエストの解決策
-
新バージョンのクロームでカメラとマイクをhttpプロトコルで呼び出せない問題を解決しました。
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] クエリ文字列の最大長を教えてください。
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
-
[解決済み] CSSメディアクエリを使用してデバイスの向きを検出するには?