30

以前のバージョンの Internet Explorer は、2,083 文字を超える Web アドレスで鳴き声を上げていました ( http://support.microsoft.com/kb/208427を参照)。一方、Firefox、Opera、および Safari は、少なくとも 80,000 を処理できます。

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

4

3 に答える 3

18

最も正確な答えではありませんが、アドレスバーに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で同じリンクをたどると、テストサーバーからHTTP414応答が返されます。

于 2010-09-15T19:43:56.853 に答える
10

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>
于 2011-05-10T14:50:18.617 に答える
1

'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>

IISExpressと設定に制限を追加しまし た。applicationhost.configweb.configmaxQueryStringLength="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
于 2016-07-19T15:31:01.020 に答える