Pergunta

Eu tenho uma aplicação web que adiciona informação contextual para XmlHttpRequest objetos usando o setRequestHeader API. Eu estou usando um nome personalizado cabeçalho (por exemplo, X-Foo) e um href="http://www.json.org/" rel="noreferrer"> JSON valor estruturado

Existe um limite de tamanho prático para o valor do cabeçalho? Se o meu JSON fica truncado, torna-se unparseable. Estou mais preocupado com limites no Apache 2, Tomcat 6 e IIS 7. Eu fiz uma pesquisa no Google para http header limite de comprimento , mas muitos dos resultados parece datado. Existem algumas observações relevantes na Como grande pode uma string user agent começar? , mas não tão específico quanto eu gostaria.

Editar: Eu só corri em toda esta questão semelhante -? máxima em valores cabeçalho HTTP

Foi útil?

Solução

Sim, mas os limites são configuráveis ??e dependentes de plataforma. Por exemplo, Tomcat tem um limite padrão de 8K. Eu acredito que o IIS 6, não tenho certeza sobre o IIS 7, tem um limite de 16K. Corri para este quando utilizar a autenticação integrada do Windows para vários sites. Acontece que o meu token de segurança era muito grande quando codificado no cabeçalho. Felizmente, estes são configuráveis. Configurações do Registro para IIS pode ser encontrada no http://support.microsoft.com/kb/820129 . Eu acredito que as configurações-chave para a mudança são MaxFieldLength (por tamanho do cabeçalho) e MaxRequestBytes (tamanho total do pedido).

Outras dicas

Apesar de cada software de servidor web tem algumas limitações, há uma diferença se há um limite para o HTTP pedido de linha mais cabeçalho campos ou para cada campo de cabeçalho.

Aqui está um resumo:

  • 1,3 , 2.0 , 2.2 , 2.3 : 8190 Bytes (para cada campo de cabeçalho)
  • O IIS:
    • 4.0 : 2097152 Bytes (para a linha de solicitação de mais de cabeçalho campos)
    • 5.0 : 131072 Bytes , 16384 Bytes com o Windows 2000 Service pack 4 (para a linha de solicitação de mais campos de cabeçalho)
    • 6,0 : 16384 Bytes (para cada campos de cabeçalho)
  • Tomcat:
    • 5.5.x / 6.0.x : 49152 Bytes (para o pedido de linha mais cabeçalho campos)
    • 7.0.x : 8190 Bytes (para a linha de solicitação de mais campos de cabeçalho)

Portanto, para concluir: Para ser aceito por todos os servidores web acima, um pedido de linha mais cabeçalho campos do pedido não deve exceder 8190 Bytes . Este também é o limite para cada campos de cabeçalho (efetivamente até menos).

Para o Apache, eu achei isso limita Servidor para artigo Apache Segurança que lista essas diretivas:

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

Para Nginx, a large_client_header_buffers directiva de HttpCoreModule controla o seguinte:

A mais longa linha de cabeçalho do pedido também não devem ter mais do que o tamanho de um tampão, caso contrário, o cliente recebe o erro "pedido Bad" (400).

Por padrão, o tamanho de um buffer é igual ao tamanho da página, dependendo da plataforma esta seja 4K ou 8K

Enquanto você pode configurar o servidor, é improvável que você realmente pode configurar todo o caminho através de firewalls, balanceadores de carga e proxies. Mantendo o pequeno tamanho do cabeçalho mantém problemas de distância.

O Flash Media Server 4.5 tem um limite de tamanho do cabeçalho padrão muito curto o que pode causar o servidor para simplesmente não respondem, sobretudo em circunstâncias onde há uma carga de cookie moderado.

Veja: flash Media server 4.5 Configuração e Administração: Configuração do servidor Configurando Apache HTTP Server: Especifique o máximo HTTP cabeçalho comprimento da linha

No arquivo Flash Media Server Adaptor.xml, o MaxHeaderLineLength elemento determina o tamanho do cabeçalho HTTP o servidor pode manipular. O valor padrão para MaxHeaderLineLength é de 1024 bytes. alguns navegadores enviar um cabeçalho maior do que 1024 bytes. Neste cenário, o Apache envia apoiar uma resposta vazio. Para corrigir esse problema, configure MaxHeaderLineLength de 8192.

. Nota: Por padrão, o cabeçalho HTTP Apache limite de tamanho é de 8 KB (8190 bytes mais um retorno de carro)

Pondo isso aqui no caso do limite de tamanho do cabeçalho em Flash Media Server morde alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top