web-dev-qa-db-fra.com

HTTP POST peut-il être illimité?

J'ai entendu dire que HTTP POST n'a pas de limite de spécification dans la taille des données, il peut être envoyé par. Est-ce vrai ou y a-t-il juste une limite vraiment élevée?

55
IAdapter

EDIT (2019) Cette réponse est maintenant assez redondante mais il y a ne autre réponse avec des informations plus pertinentes.

Cela dépend plutôt du serveur Web et du navigateur Web:

Internet Explorer Toutes les versions 2GB-1
Mozilla Firefox Toutes les versions 2GB-1
[~ # ~] iis [~ # ~] 1-5 2 Go-1
[~ # ~] iis [~ # ~] 6 4 Go-1

Bien que IIS ne prenne en charge que 200 Ko par défaut, la métabase doit être modifiée pour l'augmenter.

http://www.motobit.com/help/scptutl/pa98.htm

La méthode POST elle-même n'a pas de limite sur la taille des données.

48
David Neale

Tout à fait incroyable de voir comment toutes les réponses parlent d'IIS, comme si c'était le seul serveur Web qui comptait. Même en 2010, lorsque la question a été posée, Apache avait entre 60% et 70% de la part de marché . En tous cas,

  • Le protocole HTTP ne spécifie pas de limite.
  • La méthode POST permet d'envoyer beaucoup plus de données que la méthode GET, qui est limitée par longueur URL - environ 2 Ko).
  • La taille maximale corps de la requête POST est configurée sur le serveur HTTP et varie généralement de
    1 Mo à 2 Go
  • Le client HTTP (navigateur ou autre agent utilisateur) peut avoir ses propres limites. Par conséquent, la taille maximale de la requête POST body est min(serverMaximumSize, clientMaximumSize).

Voici les tailles de corps POST pour certains des serveurs HTTP les plus populaires:

25
Dan Dascalescu

Il n'y a pas de limite selon le protocole HTTP lui-même, mais les implémentations auront une limite supérieure pratique. J'ai envoyé des données dépassant 4 Go en utilisant POST à Apache, mais certains serveurs avaient une limite de 4 Go à l'époque.

23
Greg Hewgill

POST permet d'envoyer une longueur arbitraire de données à un serveur, mais il existe des limitations basées sur les délais d'attente/la bande passante, etc.

Je pense qu'en gros, il est plus sûr de supposer qu'il est pas correct d'envoyer beaucoup de données.

5
Russ Clarke

Différents IIS serveurs Web peuvent traiter différentes quantités de données dans l'en-tête, selon cet article (maintenant supprimé); http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html;

Notez qu'il n'y a pas de limite sur le nombre d'éléments FORM que vous pouvez passer via POST, mais uniquement sur la taille agrégée de toutes les paires nom/valeur. Alors que GET est limité à 1 024 caractères, POST sont limitées à 2 Mo sur IIS 4.0 et 128 Ko sur IIS 5.0. Chaque nom/valeur est limité à 1024 caractères, comme imposé par la spécification SGML. Bien sûr, cela ne s'applique pas aux fichiers téléchargés en utilisant enctype = 'multipart/form-data' ... Je n'ai eu aucun problème téléchargement de fichiers dans la plage de 90 à 100 Mo en utilisant IIS 5.0, en plus d'avoir à augmenter la valeur server.scriptTimeout ainsi que ma patience!

2
amelvin

HTTP peut ne pas avoir de limite supérieure, mais les serveurs Web peuvent en avoir une. Dans ASP.NET, il existe une limite d'acceptation par défaut de 4 Mo, mais vous (le développeur/webmaster) pouvez la modifier pour qu'elle soit supérieure ou inférieure.

0
Hans Kesting

Dans une application que je développais, je suis tombé sur ce qui semblait être une limite POST d'environ 2 Ko. Il s'est avéré que j'encodais accidentellement les paramètres dans l'URL au lieu de les transmettre dans le Donc, si vous rencontrez un problème là-bas, il y a certainement une très petite limite sur la taille des données POST que vous pouvez envoyer encodées dans l'URL.

0
brycejl