unidades total reservado que puede protocolo para paquete máximo hasta fragmentos fragmentar ejemplo datos datagramas datagrama cuantas cual cabecera http iis-7 apache2 http-headers tomcat6

total - ¿Hay un límite de longitud de encabezado HTTP práctico?



protocolo ip (5)

Tengo una aplicación web que agrega información contextual a los objetos XmlHttpRequest utilizando la API setRequestHeader . Estoy usando un nombre de encabezado personalizado (por ejemplo, X-Foo) y un valor estructurado JSON . No forma parte del cuerpo de QueryString de URL o POST porque es una metainformación sobre la solicitud.

¿Hay un límite de tamaño práctico para el valor del encabezado? Si mi JSON se trunca, se vuelve inutilizable. Me preocupan más los límites en Apache 2, Tomcat 6 e IIS 7. Hice una búsqueda en Google del límite de longitud del encabezado http , pero muchos de los resultados parecen anticuados. Hay algunos comentarios relevantes en ¿Qué tamaño puede tener una cadena de agente de usuario? pero no tan específico como me gustaría.

Editar: Acabo de encontrar esta pregunta similar: ¿ Máximo en los valores del encabezado http?


Aunque cada software de servidor web tiene algunas limitaciones, existe una diferencia entre si hay un límite para la línea de solicitud HTTP más campos de encabezado o para cada campo de encabezado.

Aquí hay un resumen:

  • Apache 1.3 , 2.0 , 2.2 , 2.3 : 8190 Bytes (para cada campo de encabezado)
  • IIS:
    • 4.0 : 2097152 Bytes (para los campos de encabezado de línea de solicitud más)
    • 4.0 : 131072 bytes , 16384 bytes con Windows 2000 Service Pack 4 (para los campos de línea de solicitud más el encabezado)
    • http://support.microsoft.com/kb/820129 : 16384 bytes (para cada campo de encabezado)
  • Gato:
    • 5.5.x / 6.0.x : 49152 Bytes (para la línea de solicitud más campos de encabezado)
    • 7.0.x : 8190 Bytes (para los campos de encabezado de línea de solicitud más)

Por lo tanto, para concluir: para ser aceptado por todos los servidores web mencionados anteriormente, los campos de línea de solicitud y encabezado de una solicitud no deben superar los 8190 bytes . Este es también el límite para cada campo de encabezado (efectivamente incluso menos).


Flash Media Server 4.5 tiene un límite de longitud de encabezado predeterminado muy corto que puede hacer que el servidor simplemente no responda, particularmente en circunstancias donde hay una carga moderada de cookies.

Consulte: Configuración y administración de Flash Media Server 4.5: Configuración del servidor Configuración del servidor Apache HTTP: especifique la longitud máxima de línea de encabezado HTTP

En el archivo de Flash Media Server Adaptor.xml, el elemento MaxHeaderLineLength determina el tamaño del encabezado HTTP que el servidor puede manejar. El valor predeterminado para MaxHeaderLineLength es 1024 bytes. Algunos navegadores envían un encabezado de más de 1024 bytes. En este escenario, Apache envía de vuelta una respuesta vacía. Para solucionar este problema, configure MaxHeaderLineLength en 8192.

Nota: de forma predeterminada, el límite del tamaño del encabezado HTTP de Apache es de 8 KB (8190 bytes más un retorno de carro).

Poner esto aquí en caso de que el límite de tamaño de encabezado en Flash Media Server muerde a otra persona.


Para Apache, encontré este artículo Límites de servidor para Apache Security que enumera estas directivas:

# allow up to 100 headers in a request LimitRequestFields 100 # each header may be up to 8190 bytes long LimitRequestFieldsize 8190

Para Nginx, la directiva large_client_header_buffers de HttpCoreModule controla esto:

La línea de solicitud de encabezado más larga tampoco debe ser mayor que el tamaño de un búfer; de lo contrario, el cliente obtiene el error "Solicitud incorrecta" (400).

Por defecto, el tamaño de un buffer es igual al tamaño de la página, dependiendo de la plataforma, ya sea 4K o 8K


Sí, pero los límites son configurables y dependen de la plataforma. Por ejemplo, Tomcat tiene un límite predeterminado de 8K. Creo que IIS 6, que no está seguro acerca de IIS 7, tiene un límite de 16K. Me encontré con esto cuando uso la autenticación de Windows integrada para varios sitios web. Resulta que mi token de seguridad era demasiado grande cuando estaba codificado en el encabezado. Afortunadamente, estos son configurables. La configuración del registro para IIS se puede encontrar en http://support.microsoft.com/kb/820129 . Creo que las configuraciones clave para cambiar son MaxFieldLength (por tamaño de encabezado) y MaxRequestBytes (tamaño total de la solicitud).


Si bien puede configurar el servidor, es poco probable que pueda configurar todo el camino a través de firewalls, equilibradores de carga y proxies. Mantener el tamaño del encabezado pequeño evita problemas.