Pregunta

Tengo una aplicación web que añade información contextual a los objetos XmlHttpRequest utilizando el setRequestHeader API. Estoy usando un nombre personalizado cabecera (por ejemplo X-Fu) y un valor estructurado JSON . No es parte de la cadena de consulta URL o el cuerpo de POST, ya que es la meta información acerca de la solicitud.

¿Hay un límite de tamaño práctico para el valor de la cabecera? Si mi JSON se trunca, se convierte en unparseable. Estoy muy preocupada por los límites en Apache 2, Tomcat 6 y IIS 7. Hice una búsqueda en Google de http límite de longitud de la cabecera , pero muchos de los resultados parecen anticuados. Hay algunas observaciones pertinentes en ¿Qué tan grande puede obtener una cadena de agente de usuario pero no es tan específica como me gustaría.

Editar Yo sólo encontré con esta pregunta similar - de valores de encabezado HTTP

¿Fue útil?

Solución

Sí, pero los límites son configurables y depende de la plataforma. Por ejemplo, Tomcat tiene un límite predeterminado de 8K. Creo que IIS 6, no está seguro acerca de IIS 7, tiene un límite de 16K. Me encontré con esto cuando se utiliza la autenticación integrada de Windows para varios sitios web. Resulta que mi token de seguridad era demasiado grande cuando se codifica en la cabecera. Afortunadamente, estos son configurables. Configuración del registro para IIS se pueden encontrar en http://support.microsoft.com/kb/820129 . Creo que los ajustes son clave para el cambio MaxFieldLength (según el tamaño de la cabecera) y MaxRequestBytes (tamaño total del pedido).

Otros consejos

A pesar de que cada uno de software de servidor web tiene algunas limitaciones, hay una diferencia si hay un límite para la plus de cabecera campos de petición HTTP de línea o para cada campo de cabecera.

Aquí está un resumen:

  • Apache 1,3 , 2,0 , 2,2 , 2,3 : 8190 Bytes (para cada campo de cabecera)
  • IIS:
    • 4,0 : 2097152 Bytes (para la línea de petición más cabecera campos)
    • 5.0 : 131072 Bytes , 16384 Bytes con Windows 2000 Service pack 4 (para los campos de las líneas petición más cabecera)
    • 6,0 : 16384 Bytes (para cada uno campos de cabecera)
  • Tomcat:
    • 5.5.x / 6.0.x : 49152 Bytes (para los campos de línea de petición más cabecera)
    • 7.0.x : 8190 Bytes (para los campos de línea de petición más cabecera)

Para concluir: Para ser aceptado por todos los servidores web anteriormente, un la línea de pedido más campos del encabezado de solicitud no debe superar los 8190 Bytes . Este es también el límite para cada uno campos de cabecera (efectivamente incluso menos).

Para Apache, he encontrado este Apache Seguridad artículo 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, el large_client_header_buffers Directiva de HttpCoreModule controla esto:

  

La línea de cabecera más larga de la solicitud también debe ser no más que el tamaño   de una memoria intermedia, de lo contrario el cliente obtener el error "solicitud incorrecta" (400).

     

Por defecto, el tamaño de una memoria intermedia es igual al tamaño de la página,   dependiendo de la plataforma, ya sea este o 4K 8K

Si bien se puede configurar el servidor, es poco probable que realmente se puede configurar todo el camino a través de firewalls, balanceadores de carga y servidores proxy. Mantener el tamaño de la cabecera pequeña evita que los problemas de distancia.

El Flash Media Server 4.5 tiene un límite de longitud de la cabecera por defecto muy corto que puede hacer que el servidor simplemente no responde, sobre todo en circunstancias en las que hay una carga de galletas moderado.

Vea: flash Media Server 4.5 Configuración y Administración: Configuración del servidor Configuración de Apache HTTP Server: Especificar la longitud máxima de la línea de cabecera HTTP

  

En el archivo de Flash Media Server Adaptor.xml, la MaxHeaderLineLength   elemento determina el tamaño de la cabecera HTTP del servidor puede manejar.   El valor por defecto para MaxHeaderLineLength es de 1024 bytes. algunos navegadores   enviar una cabecera de mayor de 1024 bytes. En este escenario, Apache envía   respaldar una respuesta vacía. Para solucionar este problema, configure   MaxHeaderLineLength a 8.192.

     

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

Su puesta aquí en caso de que el límite de tamaño de la cabecera en Flash Media Server muerde a otra persona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top