クエリ文字列の最大長はどれくらいですか? 質問する

クエリ文字列の最大長はどれくらいですか? 質問する

それはブラウザに依存しますか? また、Web スタックによって、リクエストから取得できるデータ量の制限は異なりますか?

ベストアンサー1

RFC 2616(ハイパーテキスト転送プロトコル - HTTP/1.1) では、クエリ文字列の長さに制限はないことが規定されています (セクション 3.2.1)。RFC 3986(Uniform Resource Identifier — URI) にも制限はないと言われていますが、DNS の制限によりホスト名は 255 文字に制限されていることを示しています (セクション 2.3.3)。

仕様では最大長は指定されていませんが、ウェブブラウザやサーバーソフトウェアによって実用的な制限が課せられます。残念ながら元のサイト(怪しげなローンサイトにつながる)ではもう利用できませんが、以下のサイトでまだ見つけることができます。Boutell.com のインターネット アーカイブ:

  • Microsoft Edge (ブラウザ)
    制限は約81578文字のようです。Microsoft Edge の URL の長さ制限

  • Chrome 64,000 文字を超えると URL の表示が
    停止しますが、100,000 文字を超える場合は表示できます。それ以上のテストは行われていません。

  • Firefox (ブラウザ)
    Windows Firefox 1.5.x では、65,536 文字を超えると、ロケーション バーに URL が表示されなくなります。ただし、より長い URL は機能します。100,000 文字を超えると、それ以上のテストは行われません。

  • Safari (ブラウザ)
    少なくとも 80,000 文字は動作します。それ以上のテストは行われていません。

  • Opera (ブラウザ)
    少なくとも 190,000 文字は動作します。190,000 文字を超えたらテストを中止しました。Windows 版 Opera 9 では、190,000 文字でも、ロケーション バーに完全に編集可能で、コピーおよび貼り付け可能な URL が表示され続けました。

  • Microsoft Internet Explorer (ブラウザ)
    Microsoft によると、Internet Explorer の URL の最大長は 2,083 文字で、URL のパス部分は 2,048 文字以下です。これより長い URL を使用しようとすると、Internet Explorer で明確なエラー メッセージが表示されます。

  • Apache (サーバー)
    Web ブラウザーで URL の最大長を測定する初期の試みでは、サーバーの URL 長の制限が約 4,000 文字に達し、それを超えると Apache で「413 Entity Too Large」エラーが発生します。Red Hat Enterprise Linux 4 にある最新の Apache ビルドが使用されました。Apache の公式ドキュメントでは、リクエスト内の個々のフィールドの制限が 8,192 バイトであるとのみ記載されています。

  • Microsoft Internet Information Server (サーバー)
    デフォルトの制限は 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 のすべての出現箇所を探し、より大きな値に置き換えます。もちろん、これにより、サービス拒否攻撃を受ける可能性が高まります。

おすすめ記事