wake-up-neo.com

Wie lange dauert eine URL in Internet Explorer 9?

Frühere Versionen von Internet Explorer haben bei Webadressen, die länger als 2.083 Zeichen sind, einen Fehler verursacht (siehe http://support.Microsoft.com/kb/208427 ). Inzwischen können Firefox, Opera und Safari mindestens 80.000 verarbeiten.

Version 9 bringt viele Verbesserungen. Ist die URL-Länge eine davon?

29
Andrew Banks

Nicht die genaueste Antwort, aber es sieht aus wie 2083 Zeichen in der Adressleiste und 5165 Zeichen, wenn Sie einem Link folgen.

(In keiner Weise offiziell, es wurde lediglich eine URL mit 41.000 Zeichen in eine Test-HTM-Datei eingefügt und mit JavaScript die URL-Länge abgefragt.)

Update:

Erstellen Sie zum Reproduzieren des Tests eine HTML-Datei mit einem Ankerelement, dessen HREF-Attribut 6000 Zeichen lang ist. Öffnen Sie die Datei in Ihrem Browser und klicken Sie auf den Link. Öffnen Sie dann die Konsole und überprüfen Sie window.location.href.length

Nach diesem Verfahren im heutigen IE9 wird die Länge mit 5165 Zeichen angegeben. Wenn ich dieselbe URL manuell über die Adressleiste lade, werden 2083 Zeichen angezeigt.

IE scheint die URL vor dem Senden der Anfrage abzuschneiden. Wenn ich im HREF-Attribut des Ankers eine URL mit 24.000 Zeichen eingebe, folgt IE dem Link, aber die resultierende Seite meldet eine URL-Länge von 5165 Zeichen. Wenn Sie dem gleichen Link in Chrome folgen, führt dies zu einer HTTP 414-Antwort von meinem Testserver.

18
Farray

Ich bekomme 5120 Zeichen in einer URL für Internet Explorer 9.

Auf keinen Fall ein endgültiger Test, aber im Folgenden wird eine schnelle Überprüfung der URL-Länge eines Href-Attributs in einem Ankertag gezeigt.

<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

Ich habe diesen Test geschrieben, der hält beim Hinzufügen von 'a' zum Parameter, bis der Browser fehlschlägt

C # -Teil:

[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();
}

Ansicht:

<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 fügte IISExpress zusätzliche Grenzwerte hinzuapplicationhost.config und web.config Einstellung maxQueryStringLength="32768".

auch Added zur Konfig

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

was nichts half, Schließlich entschied man sich, Fiddler zu verwenden, um den Referer aus dem Header zu entfernen.

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

Was gut gemacht hat.

Am IE9 habe ich bekommen

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