2010-09-15 8 views
29

Frühere Versionen von Internet Explorer krachen auf Webadressen mit mehr als 2.083 Zeichen (siehe http://support.microsoft.com/kb/208427). Inzwischen können Firefox, Opera und Safari mindestens 80.000 verarbeiten.Wie lange dauert eine URL für Internet Explorer 9?

Version 9 bringt viele Verbesserungen. Ist die URL-Länge einer von ihnen?

+2

auf Super-User gehört.com – dogbane

+19

@fahd nein es nicht - es ist eine wichtige Information für Web-Entwickler –

+1

Länge ist nicht alles, was zählt ... es geht darum, wie Sie es verwenden können - Server möglicherweise eine deutlich kleinere Grenze zum Schutz vor einigen Exploits und unbefugtem Eindringen. – Archimedix

Antwort

18

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

(nicht offiziell in irgendeiner Weise eingesteckt nur eine URL mit 41.000 Zeichen in eine Test HTM-Datei und verwendet Javascript, um die URL-Länge abzufragen.)

Update:

den Test zu reproduzieren, Erstellen Sie 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 in IE9 heute berichtet es die Länge als 5165 Zeichen. Wenn ich dieselbe URL manuell über die Adressleiste lade, werden 2083 Zeichen angezeigt.

Für was es wert ist, scheint IE die URL vor dem Senden der Anfrage abgeschnitten. Wenn ich eine URL von 24.000 Zeichen in das HREF-Attribut des Ankers einfüge, folgt IE dem Link, aber die resultierende Seite meldet eine URL-Länge von 5165 Zeichen. Wenn Sie denselben Link in Chrome verwenden, wird eine HTTP 414-Antwort von meinem Testserver ausgelöst.

+0

Ich habe keine Dokumentation über die 5150 Cap in Links zuvor gesehen, aber es würde definitiv einige Probleme erklären, die ich habe, da URLs in meinen Links> 2083 Zeichen funktionieren, aber scheitern, wenn sie in die Adressleiste gesetzt werden. Ist das nur empirisch - hast du einfach größere URLs versucht, bis sie fehlgeschlagen sind? – Chet

+0

@Chet aktualisiert ... – Farray

+0

vielen Dank, das ist sehr hilfreich. Ich werde es mir ansehen. – Chet

9

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

keineswegs einen endgültigen Test aber folgende zeigt eine schnelle Überprüfung für url Länge eines href-Attributs in einem Anker-Tag.

<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> 
+2

Klingt plausibel - die IE9 Release Notes enthalten folgende: "IE9 Features verbesserte Unterstützung für" Bookmarklets "-URL Länge Grenzen wurden gelockert." Keine Besonderheiten leider. RE Ihr Test - die maximale Länge der In-Page-HREFs ist nicht unbedingt die gleiche wie die maximale Länge der URL, die der Browser überträgt (z. B. über die Adressleiste). Müssen Sie überprüfen, indem Sie Serverprotokolle senden und überprüfen, um zu sehen, an welchem ​​Punkt eine Trunkierung auftritt (oder ein Fehler?). Wer hat definitiv Infos für IE9? – psdie

0

I wrote this test that keeps auf 'a' Hinzufügen von bis Browser Parameter nicht

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

Ausblick:

<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 added additional limits to IISExpressapplicationhost.config und web.config Einstellung maxQueryStringLength="32768".

Added auch

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

, die gar nicht Config halfen, Schließlich Fiedler zu verwenden, entschieden referer von Header zu entfernen.

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

Was gut getan hat. Ich

Auf IE9 bekam

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