Pergunta

É navegador dependente? Além disso, fazer pilhas diferentes web têm diferentes limites para a quantidade de dados que podem obter a partir da solicitação?

Foi útil?

Solução

RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) afirma que não há limite para o comprimento de uma string de consulta (seção 3.2.1). RFC 3986 também afirma que não há limite, mas indica o nome da máquina é limitada a 255 caracteres por causa de DNS limitações (seção 2.3.3).

Enquanto as especificações não especificar nenhum comprimento máximo, limites práticos são impostas pelo navegador web e software de servidor. Com base na pesquisa encontrada em Boutell.com :

  • Microsoft Internet Explorer (Navegador)
    Microsoft afirma que o comprimento máximo de uma URL no Internet Explorer é 2.083 caracteres, com não mais de 2.048 caracteres na parte do caminho do URL. As tentativas de usar URLs mais do que isso produziu uma mensagem de erro claro no Internet Explorer.

  • Microsoft Edge (Browser)
    O limite parece ser cerca de 81578 caracteres. Consulte da Microsoft Edge

  • Chrome
    Ele pára exibindo do URL após 64k caracteres, mas pode servir mais de 100 mil caracteres. Nenhuma outra teste foi feito para além disso.

  • Firefox (navegador)
    Depois de 65.536 caracteres, a barra de localização não exibe mais a URL no Windows Firefox 1.5.x. No entanto, URLs mais longas vai funcionar. Nenhuma outra teste foi feito depois de 100.000 caracteres.

  • Safari (navegador)
    Pelo menos 80.000 caracteres funcionará. O teste não foi tentado além disso.

  • Opera (Browser)
    Pelo menos 190.000 caracteres funcionará. Parou testando depois 190.000 caracteres. Opera 9 para Windows continuou a exibir um totalmente editáveis, URL copyable e pasteable na barra de localização, mesmo em 190.000 caracteres.

  • Apache (Server)
    As primeiras tentativas para medir o comprimento máximo de URL em navegadores web batido em um limite de comprimento do URL do servidor de aproximadamente 4.000 caracteres, após o qual Apache produz um erro "413 Entidade muito grande". Foi utilizada a se atual até a data Apache construção encontrados em Red Hat Enterprise Linux 4. A documentação oficial do Apache apenas menciona um limite de 8.192 bytes em um campo individual em uma solicitação.

  • Microsoft Internet Information Server (Server)
    O limite padrão é 16.384 caracteres (sim, servidor web da Microsoft aceita URLs mais longos do que o navegador web do Microsoft). Isso é configurável.

  • Perl HTTP :: Daemon (Server)
    Até 8.000 bytes vai funcionar. Esses construção de servidores de aplicativos web com módulo HTTP :: Daemon do Perl vai encontrar um limite de 16.384 bytes do tamanho combinado de todos os cabeçalhos de solicitação HTTP. Isso não inclui os dados do formulário POST-método, o upload de arquivos, etc., mas inclui o URL. Na prática, isso resultou em um erro 413 quando um URL foi significativamente maior do que 8.000 caracteres. Esta limitação pode ser facilmente removido. Olhe para todas as ocorrências de 16x1024 em Daemon.pm e substituí-los por um valor maior. Claro, isso faz aumentar a sua exposição a ataques de negação de serviço.

Outras dicas

Embora oficialmente não há limite, muitas recomendações de configuração de segurança do Estado que maxQueryStrings em um servidor deve ser definido como um limite máximo de caracteres de 1024, enquanto toda a url incluindo a string de consulta deve ser ajustado para um máximo de 2048 caracteres. Isso é para evitar a vulnerabilidade solicitação HTTP lento em um servidor web para evitar lentos ataques DDOS que aparece na Qualys Web Application Scanner e outros scanners de segurança.

Por favor, veja o código abaixo para o Windows IIS servidores com Web.config:

<security>
    <requestFiltering>
        <requestLimits maxQueryString="1024" maxUrl="2048">
           <headerLimits>
              <add header="Content-type" sizeLimit="100" />
           </headerLimits>
        </requestLimits>
     </requestFiltering>
</security>

Diferentes pilhas web suportam diferentes comprimentos de http-pedidos. Eu sei por experiência que os primeiros pilhas de Safari suportado apenas 4000 caracteres e, portanto, tinha dificuldade de lidar com páginas ASP.NET por causa do USUÁRIO-STATE. Este é mesmo para POST, então você teria que verificar o navegador e ver o que o limite de pilha é. Eu acho que você pode atingir um limite, mesmo em navegadores mais recentes. Não me lembro, mas um deles (IE6, eu acho) tinha um limite de limite de 16-bit, 32.768 ou algo assim.

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