Wat is de maximale lengte van een URL in verschillende browsers? Verschilt dit tussen browsers?
Dicteert het HTTP-protocol dit?
Als u URL's onder de 2000 tekens houdt, zullen ze'werken in vrijwel elke combinatie van client- en serversoftware. Als u zich op bepaalde browsers richt, zie hieronder voor meer details specifieke limieten.
RFC 2616 (Hypertext Transfer Protocol HTTP/1.1) sectie 3.2.1 zegt
The HTTP protocol does not place geen a priori limiet op de lengte van een URI. Servers MOETEN in staat zijn om te gaan met de URI van elke bron die ze serveren, en ZOU in staat MOETEN zijn om URI's van onbegrensde lengte als zij GET-gebaseerde formulieren die dergelijke URI's kunnen genereren dergelijke URI's kunnen genereren. Een server ZOU moeten terugsturen 414 (Request-URI Too Long) status als een URI langer is dan de server kan aankan (zie sectie 10.4.15).
Die RFC is verouderd door RFC7230 die een opfrissing is van de HTTP/1.1 specificatie. Het bevat gelijkaardige taal, maar gaat ook verder met dit te suggereren: Diverse ad hoc beperkingen op request-line lengte worden gevonden in engt; praktijk. Het is AANBEVOLEN dat alle HTTP verzenders en ontvangers ondersteunen, op zijn minst, request-line lengtes van 8000 octets.
...en de realiteit
Dat's wat de standaarden zeggen. Voor de werkelijkheid, zie dit onderzoek op boutell.com om te zien wat individuele browser en server implementaties zullen ondersteunen. Het is de moeite waard om te lezen, maar de samenvatting is: Extreem lange URL's zijn meestal een fout. URL's van meer dan 2.000 tekens zal niet werken in de meest populaire web browsers. Don't use them if you intend uw site te laten werken voor de meerderheid van Internet gebruikers. (Opmerking: dit is een citaat uit een artikel geschreven in 2006, maar in 2015 betekent IE's dalend gebruik dat langere URL's wel werken voor de meerderheid. IE heeft echter nog steeds de beperking...)
Internet Explorer's beperkingen...
IE8's maximum URL lengte is 2083 chars, en het lijkt erop dat IE9 een soortgelijke limiet heeft. Ik'heb IE10 getest en de adresbalk accepteert alleen 2083 karakters. Je kunt klikken op een URL die langer is dan dit, maar de adresbalk zal nog steeds slechts 2083 tekens van deze link tonen. Er is een leuke writeup op de IE Internals blog die ingaat op wat van de achtergrond hiervan. Er zijn gemengde berichten dat IE11 langere URLS ondersteunt - zie commentaar hieronder. Gezien sommige mensen problemen melden, blijft het algemene advies staan.
Zoekmachines houden van URL's < 2048 chars...
Wees je ervan bewust dat het sitemaps protocol, waarmee een site zoekmachines kan informeren over beschikbare pagina's, een limiet heeft van 2048 karakters in een URL. Als je van plan bent sitemaps te gebruiken, is er een limiet voor je bepaald! (zie Calin-Andrei Burloiu's antwoord hieronder) Er's ook wat onderzoek uit 2010 naar de maximale URL lengte die zoekmachines zullen crawlen en indexeren. Zij vonden dat de limiet 2047 karakters was, wat overeen lijkt te komen met de sitemap protocol spec. Zij vonden echter ook dat de Google SERP tool niet overweg kon met URL's langer dan 1855 karakters.
Extra browser roundup
Ik testte het volgende tegen een Apache 2.4 server geconfigureerd met een zeer grote LimitRequestLine en 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
Zie ook dit antwoord van Matas Vaitkevicius hieronder.
Dit is een populaire vraag, en aangezien het oorspronkelijke onderzoek ~12 jaar oud is probeer ik'het up to date te houden: Per sept 2018 staat het advies nog steeds. Hoewel IE11 mogelijk langere URL's accepteert, betekenen de alomtegenwoordigheid van oudere IE-installaties plus de beperkingen van de zoekmachine dat onder de 2000 tekens blijven het beste algemene beleid is.
WWW FAQs: Wat is de maximale lengte van een URL? heeft zijn eigen antwoord, gebaseerd op empirische tests en onderzoek. Het korte antwoord is dat meer dan 2048 tekens Internet Explorer ongelukkig maakt en dat dit dus de limiet is die je moet gebruiken. Zie de pagina voor een lang antwoord.
De URI RFC (waarvan URL's een subset zijn) definieert geen maximumlengte, maar beveelt aan dat het hostnaamgedeelte van de URI (indien van toepassing) niet langer is dan 255 tekens:
URI-producenten moeten namen gebruiken die conform zijn aan de DNS syntax, zelfs wanneer gebruik van DNS niet onmiddellijk duidelijk is, en moeten deze namen beperken tot niet meer dan 255 karakters in lengte.
Zoals opgemerkt in andere berichten, hebben sommige browsers een praktische beperking op de lengte van een URL.