Existe-t-il une taille maximale autorisée pour les en-têtes HTTP? Si oui, c'est quoi? Sinon, est-ce quelque chose de spécifique au serveur ou la norme acceptée pour autoriser les en-têtes de toute taille?
http
http-headers
Cory
la source
la source
Comme le dit vartec ci-dessus, la spécification HTTP ne définit pas de limite, mais de nombreux serveurs le font par défaut. Cela signifie, pratiquement, que la limite inférieure est de 8K . Pour la plupart des serveurs, cette limite s'applique à la somme de la ligne de demande et de TOUS les champs d'en-tête (donc gardez vos cookies courts).
Il convient de noter que nginx utilise la taille de page système par défaut, qui est 4K sur la plupart des systèmes. Vous pouvez vérifier avec ce petit programme:
pagesize.c:
Compilez avec
gcc -o pagesize pagesize.c
puis exécutez./pagesize
. Mon serveur Ubuntu de Linode m'informe consciencieusement que la réponse est 4k.la source
LimitRequestLine
etLimitRequestFieldSize
s'applique à chaque ligne d'en-tête HTTP individuellement ... pas la "somme de ..."Les valeurs d'en-tête HTTP sont limitées par les implémentations de serveur. La spécification HTTP ne limite pas la taille de l'en-tête.
La plupart des serveurs renvoient
413 Entity Too Large
ou une erreur 4xx appropriée lorsque cela se produit.La taille d'en-tête HTTP non plafonnée maintient le serveur exposé aux attaques et peut réduire sa capacité à servir le trafic organique.
La source
la source
Voici la limite du serveur Web le plus populaire
la source
J'ai également constaté que, dans certains cas, la raison de 502/400 dans le cas de nombreux en-têtes pouvait être due à un grand nombre d'en-têtes sans égard à la taille. des documents
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.http.maxhdr
la source