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 renvoyer s'il reçoit une demande GET qui dépasse cette longueur?
C'est dans le contexte d'une API de service Web, bien qu'il soit intéressant de voir également les limites du navigateur.
web-services
http
Mark Harrison
la source
la source
Réponses:
La limite dépend à la fois du serveur et du client utilisé (et, le cas échéant, également du proxy utilisé par le serveur ou le client).
La plupart des serveurs Web ont une limite de 8192 octets (8 Ko), 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 prévient même à ce sujet. Voici un extrait du chapitre 3.2.1 :
La limite dans Internet Explorer et Safari est d'environ 2 Ko, dans Opera d'environ 4 Ko et dans Firefox d'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 entière entrera.
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 aucun avertissement. Cependant, certains serveurs peuvent envoyer une erreur HTTP 414 . Si vous devez envoyer des données volumineuses, utilisez mieux POST au lieu de GET. Sa limite est beaucoup plus élevée, mais plus dépendante du serveur utilisé que du client. Habituellement, jusqu'à 2 Go environ sont autorisés 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 POST est dépassée, généralement sous la forme d'une erreur HTTP 500.
la source
Vous posez ici deux questions distinctes:
Comme déjà mentionné, HTTP lui-même 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 l'on compte les très anciens navigateurs).
C'est à cela 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 .Dans le cas des limites définies par le client, il est inutile que le serveur renvoie quelque chose, car le serveur ne recevra pas du tout la demande.
la source
Les limites du navigateur sont les suivantes:
Vouloir plus? Voir cette question sur Stack Overflow .
la source
Une question similaire se pose ici: y a-t-il une limite à la durée 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.
la source
Techniquement, j'ai vu que HTTP GET aura des problèmes si la longueur de l'URL dépasse 2000 caractères. Dans ce cas, il est préférable d'utiliser HTTP POST ou de diviser l'URL.
la source
Comme déjà mentionné, HTTP lui-même n'impose aucune limite codée en dur sur la longueur de la demande; mais les navigateurs ont des limites allant sur le caractère 2048 autorisé dans la méthode GET.
la source
Oui. Il n'y a aucune limite sur une demande GET.
Je peux envoyer environ 4000 caractères dans le cadre de la chaîne de requête à l'aide du navigateur Chrome et de la commande curl.
J'utilise le serveur Tomcat 8.x qui a renvoyé la réponse attendue 200 OK.
Voici la capture d'écran d'une demande HTTP Google Chrome (masquant le point de terminaison que j'ai essayé pour des raisons de sécurité):
RÉPONSE
la source