393 votes

Maximum sur les valeurs d’en-tête http ?

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 ?

384voto

vartec Points 53382

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?

256voto

David Schoonover Points 833

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).

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X