2012-02-20 15 views

答えて

2

HTTPプロトコルの仕様には最大長は指定されていませんが、Webブラウザとサーバーソフトウェアによって実際的な制限が課されます。

のMicrosoft Internet Explorer(ブラウザ)

マイクロソフトは、Internet ExplorerのでのURLの最大長は、URLのパス部分にもう2048以上の文字で、2083個の文字であると述べています。私のテストでは、これより長いURLを使用しようとすると、Internet Explorerで明確なエラーメッセージが表示されました。 65,536文字の後

のFirefox(ブラウザ)

、ロケーションバーは、もはやWindowsのFirefoxの1.5.xの中にURLが表示されませんしかし、より長いURLが機能します。私は100,000文字後にテストを中止しました。

サファリ(ブラウザ)

少なくとも8万文字が動作します。私は80,000文字後にテストを中止しました。

オペラ(ブラウザ)

少なくとも19万文字が動作します。私は190,000文字後にテストを中止しました。 Windows用のOpera 9は引き続き完全に編集可能で、コピー可能でペースト可能なURLをロケーションバーに表示しました(190,000文字でも)。

のApache(サーバ)Apacheは「413エンティティが大きすぎます」エラーが発生した後、約4,000文字のサーバーのURLの長さ制限にぶつかったWebブラウザでの最大のURLの長さを測定するために

私の初期の試み、 。 Red Hat Enterprise Linux 4で現在入手している最新のApacheビルドを使用しました。公式のApacheドキュメントでは、要求内の個々のフィールドに8,192バイトの制限があります。

のMicrosoft Internet Information Serverの

デフォルトの制限は16,384文字です(はい、マイクロソフトの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は、通常は間違いです。最も人気のあるWebブラウザでは、2,000文字を超えるURLは機能しません。あなたのサイトが大部分のインターネットユーザーのために働くことを意図している場合、それらを使用しないでください。

参考文献:http://www.boutell.com/newfaq/misc/urllength.html

関連する問題