Krótka odpowiedź - de facto limit 2000 znaków
Jeśli utrzymasz adresy URL poniżej 2000 znaków, będą one działać praktycznie w dowolnej kombinacji oprogramowania klienta i serwera.
Jeśli kierujesz reklamy na określone przeglądarki, zobacz poniżej szczegółowe informacje na temat określonych limitów.
Dłuższa odpowiedź - po pierwsze standardy ...
RFC 2616 (Hypertext Transfer Protocol HTTP / 1.1) mówi sekcja 3.2.1
Protokół HTTP nie nakłada żadnych ograniczeń a priori na długość identyfikatora URI. Serwery MUSZĄ być w stanie obsłużyć identyfikator URI dowolnego obsługiwanego zasobu i POWINNY być w stanie obsłużyć identyfikatory URI o nieograniczonej długości, jeśli dostarczą formularze oparte na GET, które mogłyby generować takie identyfikatory URI. Serwer POWINIEN zwracać status 414 (zbyt długi identyfikator URI żądania), jeśli identyfikator URI jest dłuższy niż serwer jest w stanie obsłużyć (patrz sekcja 10.4.15).
To RFC zostało zastąpione przez RFC7230, który jest odświeżeniem specyfikacji HTTP / 1.1. Zawiera podobny język, ale sugeruje to również:
W praktyce występują różne ograniczenia ad hoc dotyczące długości linii zapytania. ZALECANE jest, aby wszyscy nadawcy i odbiorcy HTTP obsługiwali co najmniej długość wiersza żądania wynoszącego 8000 oktetów.
... i rzeczywistość
Tak mówią standardy . W rzeczywistości na stronie boutell.com był artykuł (link prowadzi do kopii zapasowej archiwum internetowego), w którym omawiano, jakie obsługiwane będą poszczególne wdrożenia przeglądarki i serwera. Streszczenie to:
Niezwykle długie adresy URL są zwykle błędem. Adresy URL o długości ponad 2000 znaków nie będą działać w najpopularniejszych przeglądarkach internetowych. Nie używaj ich, jeśli witryna ma działać dla większości użytkowników Internetu.
(Uwaga: to jest cytat z artykułu napisanego w 2006 roku , ale w 2015 roku środki zmniejszające IE za użytkowanie, że dłuższe adresy zrobić pracę dla większości jednak IE nadal ma ograniczenia ...).
Ograniczenia przeglądarki Internet Explorer ...
Maksymalna długość adresu URL IE8 wynosi 2083 znaków i wydaje się, że IE9 ma podobny limit .
Przetestowałem IE10 i pasek adresu akceptuje tylko 2083 znaki. Możesz kliknąć adres URL dłuższy niż ten, ale pasek adresu nadal będzie wyświetlać tylko 2083 znaki tego linku.
Na blogu IE Internals znajduje się ładny opis, który zawiera kilka podstawowych informacji na ten temat.
Istnieją mieszane raporty IE11 obsługuje dłuższe adresy URL - patrz komentarze poniżej. Biorąc pod uwagę, że niektóre osoby zgłaszają problemy, ogólne porady nadal obowiązują.
Wyszukiwarki takie jak adresy URL <2048 znaków ...
Należy pamiętać, że protokół map witryn , który pozwala witrynie informować wyszukiwarki o dostępnych stronach, ma limit 2048 znaków w adresie URL. Jeśli zamierzasz używać map witryn, ustalono limit dla Ciebie! (patrz odpowiedź Calina-Andrei Burloiu poniżej)
Istnieją również badania z 2010 r. Dotyczące maksymalnej długości adresów URL, które wyszukiwarki będą indeksować i indeksować . Odkryli, że limit wynosił 2047 znaków, co wydaje się być zgodne ze specyfikacją protokołu mapy witryny. Okazało się jednak, że narzędzie Google SERP nie poradziłoby sobie z adresami URL dłuższymi niż 1855 znaków.
Sieci CDN mają ograniczenia
CDN nakładają również ograniczenia na długość identyfikatora URI i zwracają wartość a 414 Too long request
po osiągnięciu tych limitów, na przykład:
(Podziękowania dla timrs2998 za podanie tych informacji w komentarzach)
Dodatkowy przegląd przeglądarki
Testowałem poniższe na serwerze Apache 2.4 skonfigurowanym z bardzo dużymi LimitRequestLine i LimitRequestFieldSize .
Browser Address bar document.location
or anchor tag
------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
IE11 2047 5120
Edge 16 2047 10240
Zobacz także tę odpowiedź Matasa Vaitkeviciusa poniżej.
Czy te informacje są aktualne?
To popularne pytanie, a ponieważ oryginalne badania mają około 12 lat, postaram się je aktualizować: od stycznia 2020 r. Rada jest nadal aktualna . Mimo że IE11 może akceptować dłuższe adresy URL, wszechobecność starszych instalacji IE oraz ograniczenia wyszukiwarek oznaczają, że pozostawanie poniżej 2000 znaków jest najlepszą ogólną polityką.