2010-09-15 14 views
29

Poprzednie wersje przeglądarki Internet Explorer wykrztusiły na adresach internetowych dłuższych niż 2083 znaki (patrz http://support.microsoft.com/kb/208427). Tymczasem Firefox, Opera i Safari mogą obsłużyć co najmniej 80 000.Ile czasu trwania adresu URL może pobierać Internet Explorer 9?

Wersja 9 przynosi wiele ulepszeń. Czy długość adresu URL jest jedną z nich?

+2

Należy na administratora.com – dogbane

+19

@fahd no it does not - to podstawowe informacje dla programistów WWW –

+1

Długość to nie wszystko, co ważne ... chodzi o to, jak możesz z niej korzystać - serwery mogą mieć znacznie mniejszy limit, aby chronić się przed niektórymi exploitami i nieautoryzowanym włamaniem. – Archimedix

Odpowiedz

18

Nie jest to najdokładniejsza odpowiedź, ale wygląda na 2083 znaków na pasku adresu i 5165 znaków, gdy podąża za linkiem.

(nie urzędnik w jakikolwiek sposób, po prostu podłączony URL z 41.000 znaków do pliku testu HTM i używane Javascript kwerendy długość URL).

Aktualizacja:

Aby odtworzyć test, utwórz plik HTML z elementem zakotwiczenia, którego atrybut HREF ma 6000 znaków. Otwórz plik w przeglądarce i kliknij link. Następnie otwórz konsolę i sprawdź: window.location.href.length.

Po wykonaniu tej procedury w IE9, dzisiaj raportuje długość jako 5165 znaków. Jeśli ręcznie załaduję ten sam adres URL za pośrednictwem paska adresu, wygeneruje on 2083 znaki.

Dla tego, co jest warte, IE wydaje się skracać adres URL przed wysłaniem żądania. Jeśli podam URL 24 000 znaków w atrybucie HREF kotwicy, IE będzie podążał za łączem, ale wynikowa strona zgłasza długość adresu URL 5165 znaków. Po tym samym linku w Chrome uzyskujesz odpowiedź HTTP 414 z mojego serwera testowego.

+0

Nie widziałem żadnej dokumentacji na temat ograniczenia 5150 w linkach, ale to by wyjaśniało pewne problemy, które mam, ponieważ adresy URL w moich linkach> 2083 działają, ale nie działają, gdy są umieszczone w pasku adresu. Czy to jest po prostu empiryczne - czy po prostu próbowałeś większych adresów URL, dopóki się nie powiodło? – Chet

+0

@Chet updated ... – Farray

+0

wielkie dzięki, to bardzo pomocne. Spojrzę na to. – Chet

9

otrzymuję 5120 znaków w adresie URL dla programu Internet Explorer 9.

bynajmniej ostateczną próbę, ale dodaje wykazuje szybki test na długość adresu URL w atrybucie href znacznika zakotwiczenia.

<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

Brzmi to wiarygodnie - informacje o wydaniu IE9 zawierały następujące informacje: "IE9 oferuje ulepszoną obsługę" Bookmarkletów "- limity długości naURL były rozluźnione." Brak szczegółów. Przetestuj - maksymalna długość HREF na stronie nie musi być taka sama, jak maksymalna długość adresu URL, który przeglądarka będzie transmitować (np. Za pośrednictwem paska adresu). Chcesz zweryfikować, przesyłając i sprawdzając dzienniki serwera, aby sprawdzić, w którym miejscu nastąpi obcięcie (lub błąd?). Ktoś ma ostateczne informacje o IE9? – psdie

0

I wrote this test that keeps na dodanie 'a' do parametru aż przeglądarce nie

C# część:

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

Widok:

<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 i web.config ustawienie maxQueryStringLength="32768".

również Added config

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

które nie pomogło w ogóle, Wreszcie postanowił użyć Skrzypek usunąć Referer z cel.

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

Co miło.

Na IE9 mam

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) 
4043 
Powiązane problemy