URIの長さの上限とブラウザいじめ

 URI(もしくはURL)の長さの上限ってどれくらいだろう?
GETを多用する人やブックマークレットでありとあらゆることをやりたい人は一度は興味を持ったことかと存じます。


 僕の知る限り、RFCではURL(の長さ)を規定はしていないはず。
俺責任取れないから、長さとかグレーにしとくわ、見たいな事が書かれていたような気がします。完全に気のせいかも。


 でも世の中には、死ぬほど長いJSとかをロケーションバーに突っ込むクレイジーさんだっているでしょう。途中で切ったりしてないのかな?


よし、ちょっといじめてみよう。
というのが今回のモチベーション。



98000000 = 9.8 * 10^7文字長まで試した。



●環境
 Windows7/i7-920/3Gbyte


●結果(文字数)

 IE    8.0.7600.16385 .... 2048
 Opera  10.53         .... 65531
 Safari 5.0.3         .... 50881
 Firefox 3.6.3        .... inf (?)
 Chrome 8.0.552.237   .... inf (?)

●やり方
 1. テキストエディタでとてもながい文字列を入力
 2. ロケーションバーにコピペ
 3. ロケーションバー上の文字列を全選択してコピペ
 4. txtに貼り付けてwc




●考察
 IEが残念すぎる。さすがにこの長さだと、GETのクエリとかやばいんじゃないの。
ちなみに、MSのページには2083文字と書いてあったので、多分この結果が当てにならないんでしょう。


 Firefox, Safariは多分制限を設けていないっぽい。
長い文字列をロケーションバーに食わせたときのFF,CHの挙動は以下のとおり。


Firefox
 ある一定以上長い文字列をペーストすると、ペーストはされているんだけど、
文字が表示されないという問題が。さらにそれをオーバーするとクラッシュする。
最新の3.6.13でも再現したけど再現率低い。というか、再現する前にクラッシュすること多数。
セーフモードではやってない。

Chrome
 捌けるんだけど、長い(僕の環境だと3 * 10^7くらい)文字列は捌くのに5分くらいかかる。それをオーバーすると、わりと早々にあきらめてクラッシュする。
 今回気になったのは、右クリックでロケーションバーに貼り付けしようとしたときに、
クリップボードを先読みしているのか分からないんだけど、右クリックだけでクラッシュしたりしていた。ちょっとっ。



 で、この結果は、あくまでブラウザのアプリに対するロードテストで、
コアがどうURL捌いているかに直接関係無い可能性大きいのであしからず。


●今後の展望

 バリエーションとしては、リンクやdocument.location.hrefやらなんやら、その辺で以上に長いURL指定したらどうなるのかなぁ、ということを調べても良いかもしれないですね。
僕はもう飽きたのでやりません。



 後々知り合いに教えてもらったんですが、今回の件と同じことを考えて実践してみた人もいるみたいです。
5年前のことなので、比較してみるのも面白いかと思います。