[解決済み] ブラウザによって異なるURLの最大長とは?
質問
ブラウザによって異なるURLの最大長とは?ブラウザによって違うのですか?
URLの最大長は、HTTPの仕様に含まれているのですか?
どのように解決するのですか?
短い回答 - 事実上の2000文字制限
URLを2000文字以内に収めれば、クライアントとサーバーのソフトウェアの組み合わせに関わらず、事実上動作するようになります。
特定のブラウザをターゲットにしている場合、具体的な制限については以下を参照してください。
長い回答 - まず、規格について...
RFC 2616 (Hypertext Transfer Protocol HTTP/1.1) 3.2.1項には次のように書かれています。
HTTPプロトコルは の長さには先験的な制限があります。 URIを作成します。サーバーは、以下のことを処理できなければならない(MUST)。 は、提供するあらゆるリソースのURIを示します。 のURIを扱えるようにすべきです。 を提供する場合、その長さは無制限です。 を生成しうるGETベースのフォーム そのようなURIは サーバーは 414 (Request-URI Too Long)ステータスです。 URIがサーバーの許容量を超えている を処理することができる(10.4.15 節参照)。
そのRFCは、次のように時代遅れになっています。 RFC7230 これは、HTTP/1.1仕様のリフレッシュです。これはHTTP/1.1仕様を更新したもので、同様の文言が含まれていますが、さらに次のような提案も行っています。
<ブロッククオートリクエスト行の長さに関する様々なアドホックな制限は、実際に見受けられます。 を実践しています。すべてのHTTP送信者と受信者は、次のことを行うことが推奨されます(RECOMMENDED)。 は、最低でも8000オクテットのリクエストライン長をサポートしています。
...そして現実は
それが、この 規格 と言っています。については 現実 の記事がありました。 ブテルドットコム (link goes to Internet Archive backup)で、個々のブラウザやサーバーの実装がどのようにサポートされるかを論じています。その要旨は
<ブロッククオート極端に長いURLは、通常 の間違いです。 2,000文字以上のURL は、最も一般的なウェブで動作しません。 ブラウザを使用してください。 を意図している場合は、使用しないでください。 多くの人が利用できるように インターネットユーザー
(に書かれた記事からの引用です。 2006 が、2015年のIEの使用率低下により、長いURLは する は、大多数で機能します。ただし、IEにはまだ限界があります...)
Internet Explorerの限界...。
IE8のURLの最大長は2083文字です。 と思われます。 IE9でも同様の制限があります。 .
IE10でテストしたところ、アドレスバーが2083文字しか受け付けないことがわかりました。あなたは クリック これより長いURLを指定しても、アドレスバーにはこのリンクの2083文字しか表示されません。
がありますね。 IE Internalsのブログで紹介されています。 この背景には、いくつかの理由があります。
IE11 が長い URL をサポートしているという報告は様々です - 以下のコメントをご覧ください。問題があるという報告もありますが、一般的なアドバイスはまだ有効です。
検索エンジンは2048文字のURLを好みます。
注意することは サイトマッププロトコル は、サイトが利用可能なページを検索エンジンに通知することができますが、URLの文字数は2048文字までと制限されています。サイトマップを利用される方は、この制限にご注意ください。(参照 Calin-Andrei Burloiuの回答 をご覧ください)
については、2010年の調査結果もあるようです。 検索エンジンがクロールし、インデックスする最大URLの長さ . その結果、2047文字が限界であることがわかり、これはサイトマッププロトコルの仕様と関連しているようです。しかし、彼らはまた、Google の SERP ツールは1855文字以上のURLには対応しない。
CDNには限界がある
また、CDNはURIの長さに制限を課しており、URIの長さに応じて
414 Too long request
に達したときなどです。
(この情報をコメントで提供してくれたtimrs2998に感謝します)
追加ブラウザまとめ
Apache 2.4サーバーに非常に大きな リミットリクエストライン と リミットリクエストフィールドサイズ .
Browser Address bar document.location
or anchor tag
------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
IE11 2047 5120
Edge 16 2047 10240
参照 この回答 Matas Vaitkeviciusさんからのコメントです。
この情報は最新のものですか?
これはよくある質問ですが、元の研究が14年前のものなので、最新の情報を提供するように努めます。 2021年1月 というアドバイスはまだ有効です。IE11が長いURLを受け入れる可能性があるとしても、古いIEがどこにでもインストールされていることと、検索エンジンの制限から、2000文字以下にすることが一般的な方針として最適であると言えるでしょう。
関連
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] JavaScriptで、数値が精度を失うことなく到達できる最も高い整数値は何ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】全てのブラウザで、Webページのキャッシュを制御するには?
-
[解決済み] Cache-Control: privateとは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] カスタムHTTPヘッダー:命名規則
-
[解決済み] PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?
-
[解決済み] ブラウザのCookieドメインはどのように機能するのですか?
-
[解決済み] Chromeのネットワークデバッガをリダイレクトで使用する方法
-
[解決済み] HTTPとRESTの違いは何ですか?
-
[解決済み】BASIC認証でWebサイトからユーザーをログアウトさせる方法は?
-
[解決済み】cURLを使用してBasic HTTP認証を正しく定義する方法は?
-
[解決済み】HTTP 1.0 vs 1.1
-
[解決済み】HTTPヘッダ(キャッシュコントロール用)を設定する方法は?)
-
[解決済み] Cache-Control: privateとは何ですか?