Y a-t-il une acceptée taille maximale autorisée pour les en-têtes HTTP ? Dans l’affirmative, quel est-il ? Si ce n’est pas le cas, est-ce quelque chose qui est serveur spécifique ou est la norme acceptée pour permettre des en-têtes de n’importe quelle taille ?
Réponses
Trop de publicités?Non, HTTP ne définit pas de limite. Cependant, la plupart des serveurs web n'limiter la taille des en-têtes qu'ils acceptent. Par exemple dans Apache limite par défaut est de 8 ko, dans IIS c'est 16K. Le serveur sera de retour 413 Entity Too Large
d'erreur si les en-têtes de la taille dépasse cette limite.
Question connexe: grand Comment une chaîne de l'agent utilisateur d'obtenir?
Comme vartec dit ci-dessus, la spécification HTTP ne permet pas de définir une limite, toutefois, de nombreux serveurs par défaut. Cela signifie, en pratique, la limite inférieure est de 8K. Pour la plupart des serveurs, cette limite s'applique à la somme de la ligne de demande et TOUS les champs d'en-tête (donc, gardez vos cookies court).
- Apache 2.0, 2.2: 8K
- nginx: 4K - 8K
- IIS: varie selon la version, 8K - 16K
- Tomcat: varie selon la version, 8K - 48K (?!)
Il est intéressant de noter que nginx utilise le système de la taille de page par défaut, ce qui est 4K sur la plupart des systèmes. Vous pouvez le vérifier avec ce petit programme:
pagesize.c:
#include <unistd.h>
#include <stdio.h>
int main() {
int pageSize = getpagesize();
printf("Page size on your system = %i bytes\n", pageSize);
return 0;
}
Compiler avec gcc -o pagesize pagesize.c
puis exécutez ./pagesize
. Mon serveur ubuntu à partir de Linode consciencieusement m'informe de la réponse est en 4k.