Y a-t-il une limite à la longueur d’une requête GET?

Y a-t-il une limite à la longueur d’une requête 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 capables de gérer l’URI de toute ressource qu’ils servent, et DEVRAIENT être capables de gérer les URI de longueur illimitée s’ils fournissent des formulaires basés sur le 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 section 10.4.15).

    Remarque: les serveurs ne doivent pas dépendre des longueurs d’URI supérieures à 255 octets, car certaines implémentations de clients ou de proxy plus anciens risquent de ne pas prendre correctement en charge ces longueurs.

    Cet article résume assez bien

    Résumé: Il dépend de l’implémentation, car il n’y a pas de limite spécifiée dans la RFC. Il serait prudent d’utiliser jusqu’à 2000 caractères (limite de IE). Si vous êtes proche de cette longueur, vous devez vous assurer que vous avez besoin d’URI aussi longtemps, peut-être qu’un autre design pourrait contourner cela.

    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 en 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 autorisaient environ 5400 caractères. FF et IE9 ont atteint environ 6200 caractères. Tout ce qui précède a renvoyé “400 Bad request”. Je n’ai pas étudié plus avant ce qui était responsable du 400. J’étais bien avec le maximum que j’ai trouvé, car j’avais besoin d’environ 2000 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.

    W3C a dénoncé sans équivoque cela comme un mythe ici

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

    setFixedLengthStreamingMode (int) avec les parameters contentLength peut définir la longueur fixe d’un corps de requête HTTP.