longueur maximale de la requête HTTP GET?

Quelle est la longueur maximale d'une requête HTTP GET? Y a-t-il une erreur de réponse définie que le serveur peut/devrait retourner s'il reçoit une requête GET dépassant cette longueur?

mise à jour: comme indiqué dans les tags, c'est dans le contexte d'une API de service web, bien qu'il soit intéressant de voir les limites du navigateur aussi.

411
demandé sur Mark Harrison 2010-04-18 00:32:25
la source

7 ответов

la limite dépend à la fois du serveur et du client utilisé (et, le cas échéant, du mandataire que le serveur ou le client utilise).

la plupart des serveurs Web ont une limite de 8192 octets (8KO), qui est habituellement configurable quelque part dans la configuration du serveur. En ce qui concerne le côté client, la spécification HTTP 1.1 prévient même à ce sujet, voici un extrait de chapitre 3.2.1 :

Note: Les serveurs doivent être prudents en fonction de la longueur des URI au-dessus de 255 octets, parce qu'un client plus âgé ou un mandataire les implémentations pourraient ne pas supporter correctement ces longueurs.

La limite est dans MSIE et Safari sur 2KB, à l'Opéra, à propos de 4KO et dans Firefox sur 8 KO. Nous pouvons donc supposer que 8KB est la longueur maximale possible et que 2KB est une longueur plus abordable pour compter du côté du serveur et que 255 octets est la longueur la plus sûre à supposer que l'URL en entier viennent.

si la limite est dépassée dans le navigateur ou le serveur, la plupart tronqueront simplement les caractères en dehors de la limite sans avertissement. certains serveurs peuvent cependant envoyer une erreur HTTP 414 . Si vous avez besoin d'envoyer de grandes données, alors mieux utiliser POST au lieu de GET. Sa limite est beaucoup plus élevé, mais plus dépendant du serveur utilisé que le client. Généralement jusqu'à environ 2 Go est autorisé par le serveur web Moyen. 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 de POST est dépassée, généralement sous forme D'erreur HTTP 500.

396
répondu BalusC 2010-04-18 00:53:35
la source

vous posez deux questions distinctes ici:

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

comme déjà mentionné, le protocole HTTP lui-même n'impose aucune limite à 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 navigateurs très anciens ).

est-ce qu'il y a une erreur de réponse définie que le serveur peut / devrait retourner si elle reçoit une requête GET dépassant cette longueur?

c'est celui Que 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 RFC 2616 .

pour le cas de limites définies par le client, il n'y a pas de sens sur le serveur retournant quelque chose, parce que le serveur ne reçoivent pas la demande.

Espérons que cette aide.

131
répondu Edurne Pascual 2012-11-14 00:54:53
la source

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 retourné une page blanche avant qu'il soit arrivé au serveur je pense.

4
répondu jay 2017-05-23 14:54:53
la source

les limites du navigateur sont:

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

vous en voulez plus? voir cette question sur Stack Overfollow

4
répondu Jiraff537 2018-05-24 16:05:30
la source

techniquement, J'ai vu HttpGet aura problème si la longueur de L'URL va au-delà de 2000 caractères. Dans ce cas, il est préférable d'utiliser HttpPost ou de partager l'URL.

3
répondu MSIslam 2013-06-25 23:39:31
la source

comme déjà mentionné, le HTTP lui-même N'impose aucune limite hard-codée sur la longueur de la requête; mais les navigateurs ont des limites allant sur le caractère 2048 autorisé dans la méthode get.

1
répondu Sandeep Kumar 2016-07-08 16:41:37
la source

GET REQUEST using chrome browser Oui, c'est ça. Il n'y a pas de limite sur demande.

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

j'utilise tomcat 8.le serveur x qui a retourné la réponse attendue de 200 OK.

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

réponse GET using chrome browser

-2
répondu Lokendra Chauhan 2017-09-03 19:11:33
la source

Autres questions sur http web-services