Réponse courte - limite de facto de 2000 caractères
Si vous conservez les URL sous 2 000 caractères, elles fonctionneront dans pratiquement toutes les combinaisons de logiciels client et serveur.
Si vous ciblez des navigateurs particuliers, voir ci-dessous pour plus de détails sur les limites spécifiques.
Réponse plus longue - d'abord, les normes ...
RFC 2616 (Hypertext Transfer Protocol HTTP / 1.1) section 3.2.1 dit
Le protocole HTTP ne place aucune limite a priori sur la longueur d'un URI. Les serveurs DOIVENT être capables de gérer l'URI de toute ressource qu'ils servent, et DEVRAIENT être capables de gérer des URI de longueur illimitée s'ils fournissent des formulaires basés sur GET qui pourraient générer de tels URI. Un serveur DEVRAIT retourner le statut 414 (Request-URI Too Long) si un URI est plus long que ce que le serveur peut gérer (voir la section 10.4.15).
Ce RFC a été obsolète par le RFC7230 qui est une actualisation de la spécification HTTP / 1.1. Il contient un langage similaire, mais suggère également ceci:
On trouve en pratique diverses limitations ad hoc sur la longueur de la ligne de demande. Il est RECOMMANDÉ que tous les expéditeurs et destinataires HTTP prennent en charge, au minimum, des longueurs de ligne de demande de 8000 octets.
... et la réalité
C'est ce que disent les normes . Pour la réalité , il y avait un article sur boutell.com (lien vers la sauvegarde Internet Archive) qui a discuté de ce que les implémentations de navigateur et de serveur prendront en charge. Le résumé est:
Les URL extrêmement longues sont généralement une erreur. Les URL de plus de 2 000 caractères ne fonctionneront pas dans les navigateurs Web les plus populaires. Ne les utilisez pas si vous prévoyez que votre site fonctionnera pour la majorité des internautes.
(Remarque: il s'agit d'une citation d'un article écrit en 2006 , mais en 2015, l'utilisation décroissante d'IE signifie que les URL plus longues ne le travail pour la majorité Cependant, IE a encore la limitation ....)
Limitations d'Internet Explorer ...
La longueur maximale d'URL d'IE8 est de 2083 caractères , et il semble qu'IE9 ait une limite similaire .
J'ai testé IE10 et la barre d'adresse n'acceptera que 2083 caractères. Vous pouvez cliquer une URL plus longue que celle-ci, mais la barre d'adresse n'affichera que 2083 caractères de ce lien.
Il y a une belle rédaction sur le blog IE Internals qui qui se passe.
Il existe des rapports mitigés sur IE11 prenant en charge des URL plus longues - voir les commentaires ci-dessous. Étant donné que certaines personnes signalent des problèmes, l'avis général reste valable.
Les moteurs de recherche comme les URL <2048 caractères ...
Sachez que le protocole Sitemaps , qui permet à un site d'informer les moteurs de recherche sur les pages disponibles, a une limite de 2048 caractères dans une URL. Si vous avez l'intention d'utiliser des sitemaps, une limite a été fixée pour vous! (voir la réponse de Calin-Andrei Burloiu ci-dessous)
Il y a aussi des recherches de 2010 sur la longueur maximale des URL que les moteurs de recherche exploreront et indexeront . Ils ont trouvé que la limite était de 2047 caractères, ce qui semble allié aux spécifications du protocole de plan du site. Cependant, ils ont également constaté que l' outil Google SERP ne gérerait pas les URL de plus de 1855 caractères.
Les CDN ont des limites
Les CDN imposent également des limites sur la longueur de l'URI et renvoient un 414 Too long request
lorsque ces limites sont atteintes, par exemple:
(crédit à timrs2998 pour avoir fourni cette information dans les commentaires)
Aperçu du navigateur supplémentaire
J'ai testé ce qui suit contre un serveur Apache 2.4 configuré avec un très grand LimitRequestLine et 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
Voir aussi cette réponse de Matas Vaitkevicius ci-dessous.
Ces informations sont-elles à jour?
C'est une question populaire, et comme la recherche originale a environ 12 ans, je vais essayer de la garder à jour: à partir de janvier 2020 , le conseil est toujours valable. Même si IE11 peut éventuellement accepter des URL plus longues, l'omniprésence des anciennes installations IE ainsi que les limitations des moteurs de recherche signifient que le maintien de moins de 2000 caractères est la meilleure politique générale.