web-dev-qa-db-ja.com

Internet Explorer 9ではURLにどれくらいの時間がかかりますか?

過去のバージョンのInternet Explorerは、2,083文字を超えるWebアドレスに侵入しました( http://support.Microsoft.com/kb/208427 を参照)。一方、Firefox、Opera、Safariは少なくとも80,000を処理できます。

バージョン9では、多くの改善が行われています。 URLの長さはその1つですか?

30
Andrew Banks

最も正確な答えではありませんが、アドレスバーでは2083文字、リンク先では5165文字のように見えます。

(いかなる方法でも公式ではありません。41,000文字のURLをテストHTMファイルに接続し、JavaScriptを使用してURLの長さをクエリしました。)

更新:

テストを再現するには、HREF属性が6000文字であるアンカー要素を含むHTMLファイルを作成します。ブラウザでファイルを開き、リンクをクリックします。次に、コンソールを開いてwindow.location.href.length

今日のIE9でのこの手順に従って、長さが5165文字として報告されます。同じURLをアドレスバーから手動でロードすると、2083文字が報告されます。

価値があるのは、IEはリクエストを送信する前にURLを切り捨てているようです。アンカーのHREF属性に24,000文字のURLを配置すると、IEリンクをたどるが、結果のページは5165文字のURLの長さを報告するChromeで同じリンクをたどると、テストサーバーからHTTP 414応答が返されます。

18
Farray

Internet Explorer 9のURLに5120文字あります。

絶対的なテストではありませんが、以下はアンカータグのhref属性のURLの長さを簡単にチェックする方法を示しています。

<html>
    <head>
        <script type="text/javascript">
            function init() {
                var anchor = document.getElementById('anc');
                var valid = true;
                var url = 'http://google.com/?search=';
                var count = url.length;

                while(valid) {
                    url = url + '1';
                    anchor.href = url;
                    count++;
                    valid = anchor.href == url;

                    if(count > 100000) {
                        alert('Test reached 100,000, stopping...');
                        valid = false;
                    }
                }
                alert('Complete, count = ' + count);
            }
        </script>
    </head>
    <body onload="init()">
        <a id="anc" href="http://google.com/">Test</a>
    </body>
</html>
9
fungus1487

私が保持するこのテストを書いた ブラウザーが失敗するまでパラメーターに'a'を追加する

C#パート:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ParamTest(string x)
{
    ViewBag.TestLength = 0;
    if (!string.IsNullOrEmpty(x))
    {
        System.IO.File.WriteAllLines("c:/result.txt", 
                       new[] {Request.UserAgent, x.Length.ToString()});
        ViewBag.TestLength = x.Length + 1;
    }

    return View();
}

ビュー:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">
    $(function() {
        var text = "a";
        for (var i = 0; i < parseInt(@ViewBag.TestLength)-1; i++) {
            text += "a";
        }

        document.location.href = "http://localhost:50766/Home/ParamTest?x=" + text;
    });
</script>

I IISExpressに追加の制限を追加applicationhost.configおよびweb.config設定maxQueryStringLength="32768"

また 追加 設定に

<headerLimits>
    <add header="Content-type" sizeLimit="32768" />
</headerLimits>

これはまったく役に立ちませんでした。最後に、フィドラーを使用してヘッダーからリファラーを削除することにしました。

static function OnBeforeRequest(oSession: Session) {
if (oSession.url.Contains("localhost:50766")) {
        oSession.RequestHeaders.Remove("Referer");
        }

うまくいきました。

IE9で

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
4043
0