Jaka jest maksymalna długość adresu URL w różnych przeglądarkach? Czy różni się ona pomiędzy przeglądarkami?
Czy dyktuje ją protokół HTTP?
Jeśli utrzymasz adresy URL poniżej 2000 znaków, będą one działać w praktycznie każdej kombinacji oprogramowania klienta i serwera. Jeśli kierujesz się do konkretnych przeglądarek, zobacz poniżej po więcej szczegółów dotyczących limitów.
RFC 2616 (Hypertext Transfer Protocol HTTP/1.1) sekcja 3.2.1 mówi.
Protokół HTTP nie nakłada żadnego ograniczenia a priori na długość URI. Serwery MUSZĄ być w stanie obsłużyć URI każdego zasobu, który obsługują, i POWINNY być w stanie obsłużyć URI o długości o nieograniczonej długości, jeśli zapewniają formularze oparte na GET, które mogą generować takie URI. Serwer POWINIEN zwrócić 414 (Request-URI Too Long) status jeśli URI jest dłuższy niż serwer może obsłużyć (patrz sekcja 10.4.15).
Ten RFC został przestarzały przez RFC7230, który jest odświeżeniem specyfikacji HTTP/1.1. Zawiera on podobny język, ale także dalej sugeruje to: Różne ograniczenia ad hoc długości linii żądania występują w praktyce. Zaleca się, aby wszyscy nadawcy i odbiorcy HTTP obsługiwały, co najmniej, żądania o długości linii 8000 oktetów.
...i rzeczywistość
To właśnie mówią standardy. Aby poznać rzeczywistość, zobacz te badania na boutell.com, aby zobaczyć, co poszczególne przeglądarki i serwery będą obsługiwać. Warto przeczytać, ale streszczenie brzmi następująco: Ekstremalnie długie adresy URL są zazwyczaj błąd. URLy powyżej 2000 znaków nie będą działać w najpopularniejszych przeglądarkach internetowych. przeglądarkach. Nie używaj ich, jeśli zamierzasz swoją stronę do pracy dla większości użytkowników Internetu. (Uwaga: jest to cytat z artykułu napisanego w 2006 roku, ale w 2015 roku IE'malejące użycie oznacza, że dłuższe adresy URL do działają dla większości. Jednak IE wciąż ma to ograniczenie...)
Internet Explorer's limitations...
IE8' maksymalna długość URL to 2083 znaki, i wygląda na to, że IE9 ma podobne ograniczenie. Przetestowałem IE10 i pasek adresu akceptuje tylko 2083 znaki. Możesz kliknąć adres URL, który jest dłuższy niż ten, ale pasek adresu nadal będzie pokazywał tylko 2083 znaki tego linku. Istnieje ładny opis na blogu IE Internals, który przechodzi do niektórych z tła tego. Istnieją mieszane raporty IE11 obsługuje dłuższe adresy URL - patrz komentarze poniżej. Biorąc pod uwagę, że niektórzy ludzie zgłaszają problemy, ogólna rada nadal stoi.
Wyszukiwarki lubią adresy URL < 2048 chars...
Należy pamiętać, że protokół sitemaps, który pozwala witrynie informować wyszukiwarki o dostępnych stronach, ma limit 2048 znaków w adresie URL. Jeśli zamierzasz korzystać z sitemaps, limit został ustalony za Ciebie! (patrz Calin-Andrei Burloiu's answer poniżej) Istnieje również pewne badania z 2010 roku na temat maksymalnej długości adresu URL, który wyszukiwarki będą indeksować. Stwierdzili oni, że limit wynosi 2047 znaków, co wydaje się być związane z protokołem sitemap. Jednakże, odkryli oni również, że narzędzie Google SERP nie poradzi sobie z adresami URL dłuższymi niż 1855 znaków.
Dodatkowy przeglądarkowy roundup
Przetestowałem poniższe działanie na serwerze Apache 2.4 skonfigurowanym z bardzo dużym 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 ta odpowiedź od Matasa Vaitkeviciusa poniżej.
Jest to popularne pytanie, a ponieważ oryginalne badania mają ~12 lat, postaram się, aby były aktualne: Na dzień Sep 2018, rada nadal jest aktualna. Nawet jeśli IE11 może ewentualnie zaakceptować dłuższe adresy URL, wszechobecność starszych instalacji IE plus ograniczenia wyszukiwarek oznaczają, że pozostawanie poniżej 2000 znaków jest najlepszą ogólną polityką.
WWW FAQs: Jaka jest maksymalna długość adresu URL? ma swoją własną odpowiedź opartą na testach empirycznych i badaniach. Krótka odpowiedź brzmi, że przekroczenie 2048 znaków powoduje, że Internet Explorer jest nieszczęśliwy i dlatego jest to limit, którego powinieneś używać. Zobacz stronę, aby uzyskać dłuższą odpowiedź.
URI RFC]1 (którego podzbiorem są adresy URL) nie definiuje maksymalnej długości, jednak zaleca, aby część nazwy hosta w URI (jeśli dotyczy) nie przekraczała 255 znaków:
Producenci URI powinni używać nazw, które są zgodne ze składnią DNS, nawet jeśli użycie DNS nie jest natychmiast oczywiste, i powinni ograniczyć te nazwy do nie więcej niż 255 znaków w długości.
Jak zauważono w innych postach chociaż, niektóre przeglądarki mają praktyczne ograniczenie na długość adresu URL.