web-dev-qa-db-fra.com

Y a-t-il une limite à la longueur d'une demande GET?

Y a-t-il une limite à la longueur d'une demande GET?

144
Javapolis

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.

75
Ed Guiness

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.

53
Vinko Vrsalovic

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.

18
OneWorld

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.

17
Joakim Karlsson

Le W3C a catégoriquement déclaré cela comme un mythe

http://www.w3.org/2001/tag/doc/get7#myths

12
Oluwabusayo

setFixedLengthStreamingMode (int) avec les paramètres contentLength peut définir la longueur fixe du corps d'une requête HTTP.

0
Andy Bettisworth