web-dev-qa-db-fra.com

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 renvoyer s'il reçoit une demande GET dépassant cette longueur?

pdate: Comme indiqué dans les balises, il s'agit du contexte d'une API de service Web, bien qu'il soit intéressant de voir également les limites du navigateur.

443
Mark Harrison

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 le met même en garde, voici un extrait de chapitre 3.2.1 :

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.

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 8 Ko est la longueur maximale possible et que 2 Ko est une longueur plus abordable sur laquelle s’appuyer côté serveur et que 255 octets est la longueur la plus sûre pour supposer que l’URL complète entrera.

Si la limite est dépassée dans le navigateur ou sur le serveur, la plupart ne feront que tronquer les caractères situés en dehors de la limite sans aucun avertissement. Certains serveurs peuvent toutefois envoyer un 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. Habituellement, le serveur Web moyen autorise jusqu'à environ 2 Go. Ceci est également configurable quelque part dans les paramètres du serveur. Le serveur moyen affichera une erreur/exception spécifique au serveur lorsque la limite POST est dépassée, généralement sous la forme d'une erreur HTTP 500.

421
BalusC

Vous posez deux questions distinctes ici:

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

Comme déjà mentionné, HTTP n'impose aucune limite codée en dur sur la longueur de la demande; mais les navigateurs ont des limites allant de 2 Ko à 8 Ko (255 octets si nous comptons des navigateurs très anciens ).

Existe-t-il une erreur de réponse définie que le serveur peut/doit renvoyer s'il reçoit une demande GET dépassant 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 dans les cas où une limite définie par le serveur est atteinte. Vous pouvez voir plus de détails sur RFC 2616 .

Dans le cas de limites définies par le client, rien n’indique que le serveur retourne quelque chose, car le serveur ne recevra pas la demande.

J'espère que cela t'aides.

137
Edurne Pascual

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

12
Jiraff537

Question similaire ici: Y a-t-il une limite à la longueur d'une demande 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 au serveur, je pense.

4
jay

Techniquement, j'ai vu que HttpGet aurait un problème si la longueur de l'URL dépasse 2 000 caractères. Dans ce cas, il est préférable d'utiliser HttpPost ou de scinder l'URL.

3
MSIslam

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

2
Sandeep Kumar