Y a-t-il une limite à la longueur d'une demande GET?
Pas dans le RFC , non, mais il y a des limites pratiques.
Le protocole HTTP ne place aucune limite a priori sur la longueur d'un URI. Les serveurs DOIVENT être en mesure de gérer l'URI de toute ressource qu'ils servent et DEVRAIENT être en mesure de gérer des URI de longueur illimitée s'ils fournissent des formulaires basés sur GET pouvant générer de tels URI. Un serveur DEVRAIT renvoyer l'état 414 (Request-URI Too Long) si un URI est plus long que le serveur ne peut gérer (voir la section 10.4.15).
Remarque: les serveurs doivent faire preuve de prudence en fonction des longueurs d'URI supérieures à 255 octets, car certaines implémentations plus anciennes de clients ou de proxy risquent de ne pas prendre en charge correctement ces longueurs.
Cet article résume assez bien
Résumé: Cela dépend de l'implémentation, car il n'y a pas de limite spécifiée dans le RFC. Il serait prudent d'utiliser jusqu'à 2000 caractères (la limite d'IE.) Si vous vous approchez de cette longueur, vous devez vous assurer que vous avez vraiment besoin d'URI aussi longs, peut-être qu'un autre modèle pourrait résoudre ce problème.
Les URI doivent être lisibles, même lorsqu'ils sont utilisés pour envoyer des données.
Comme demandé par l'utilisateur Erickson, je poste mon commentaire comme réponse:
J'ai fait quelques tests supplémentaires avec IE8, IE9, FF14, Opera11, Chrome20 et Tomcat 6.0.32 (nouvelle installation), Jersey 1.13 côté serveur. J'ai utilisé la fonction jQuery $ .getJson et JSONP. Résultats: tous les navigateurs permettaient environ 5400 caractères. FF et IE9 ont généré jusqu'à environ 6200 caractères. Tout ce qui précède est revenu "400 Bad request". Je n'ai pas enquêté davantage sur ce qui était responsable du 400. J'allais bien avec le maximum que j'avais trouvé, car j'avais besoin d'environ 2 000 caractères dans mon cas.
La spécification ne limite pas la longueur d'une requête HTTP Get, mais les différents navigateurs implémentent leurs propres limitations. Par exemple, Internet Explorer a une limitation implémentée à 2083 caractères.
Le W3C a catégoriquement déclaré cela comme un mythe
setFixedLengthStreamingMode (int) avec les paramètres contentLength peut définir la longueur fixe du corps d'une requête HTTP.