longueur maximale de la requête HTTP GET?

Quelle est la longueur maximale d’une requête HTTP GET? Existe-t-il une erreur de réponse définie que le serveur peut / doit retourner s’il reçoit une requête GET supérieure à cette longueur?

update: comme indiqué dans les balises, ceci est dans le contexte d’une API de service Web, bien qu’il soit également intéressant de voir les limites du navigateur.

La limite dépend à la fois du serveur et du client utilisé (et, le cas échéant, du proxy utilisé par le serveur ou le client).

La plupart des serveurs Web ont une limite de 8 192 octets (8 Ko), ce qui est généralement configurable quelque part dans la configuration du serveur. En ce qui concerne le côté client, la spécification HTTP 1.1 en avertit même, voici un extrait du chapitre 3.2.1 :

Remarque: les serveurs doivent faire attention à ne pas utiliser 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.

La limite est dans MSIE et Safari environ 2 Ko, dans Opera environ 4 Ko et dans Firefox environ 8 Ko. Nous pouvons donc supposer que 8KB est la longueur maximale possible et que 2Ko est une longueur plus abordable sur le côté serveur et que 255 octets sont la longueur la plus sûre pour supposer que l’URL entière va entrer.

Si la limite est dépassée dans le navigateur ou le serveur, la plupart des utilisateurs vont simplement tronquer les caractères en dehors de la limite sans aucun avertissement. Certains serveurs peuvent toutefois envoyer une erreur HTTP 414 . Si vous devez envoyer des données volumineuses, utilisez plutôt POST au lieu de GET. Sa limite est beaucoup plus élevée, mais dépend davantage du serveur utilisé que du client. En règle générale, le serveur Web moyen autorise environ 2 Go. Ceci est également configurable quelque part dans les parameters du serveur. Le serveur moyen affiche une erreur / exception spécifique au serveur lorsque la limite de POST est dépassée, généralement sous la forme d’une erreur HTTP 500.

Vous posez deux questions distinctes ici:

Quelle est la longueur maximale d’une requête HTTP GET?

Comme déjà mentionné, HTTP lui-même n’impose aucune limite codée en dur sur la longueur de la requête; mais les navigateurs ont des limites allant de 2 Ko à 8 Ko (255 octets si l’on compte les très anciens navigateurs).

Existe-t-il une erreur de réponse définie que le serveur peut / doit retourner s’il reçoit une requête GET supérieure à cette longueur?

C’est celui auquel personne n’a répondu.

HTTP 1.1 définit le code d’état 414 Request-URI Too Long pour les cas où une limite définie par le serveur est atteinte. Vous pouvez voir plus de détails sur la RFC 2616 .

Dans le cas des limites définies par le client, il n’y a aucun sens sur le serveur qui renvoie quelque chose, car le serveur ne recevra pas la demande du tout.

J’espère que cela t’aides.

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

J’ai atteint la limite et sur mon compte d’hébergement partagé, mais le navigateur a renvoyé une page vierge avant d’arriver sur le serveur, je pense.

Les limites du navigateur sont les suivantes:

 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 

vouloir plus? voir cette question sur Stack Overfollow

Techniquement, j’ai vu que HttpGet aurait un problème si la longueur de l’URL dépassait 2000 caractères. Dans ce cas, il est préférable d’utiliser HttpPost ou de diviser l’URL.

Comme déjà mentionné, HTTP lui-même n’impose aucune limite codée en dur sur la longueur de la requête; mais les navigateurs ont des limites allant jusqu’à 2048 caractères autorisés dans la méthode get.

OBTENEZ LA DEMANDE en utilisant le navigateur chrome Oui. Il n’y a pas de limite à la demande GET.

 I am able to send ~4000 characters as part of the query ssortingng using chrome browser & curl command both. 

J’utilise le serveur tomcat 8.x qui a renvoyé la réponse 200 OK attendue.

Voici la capture d’écran de la requête http chrome (masquant le noeud final que j’ai essayé pour des raisons de sécurité):

RÉPONSE GET utilisant le navigateur chrome