existe um tamanho máximo para o comprimento de uma entrada oculta em html?


91

em outras palavras:

<input type="hidden" value="Can I put as much as I want in here, or is there a limit?" />

e se sim, o que é?


6
O melhor método de perguntar que já vi.
Andrés Morales

Respostas:


58

Depende do método de envio do formulário.

Com o GET, existe um limite comum acordado de cerca de 1-2 kilobytes, dependendo das limitações do navegador e do servidor.

Com o POST, não há limite técnico no navegador, mas geralmente no lado do servidor - consulte, por exemplo, Apache LimitRequestBody, PHP post_max_sizee assim por diante.


Cuidado com os problemas apontados por @naugtur abaixo para campos de entrada de texto - pelo menos para aqueles, existem limites técnicos impostos por navegadores diferentes.
Oliver

Acabei de executar alguns testes em 3 navegadores mais ou menos atuais (IE9, FF 10 ESR, Chrome 24) e todos eles enviaram valores de entrada ocultos de 100 KB sem nenhum problema. Portanto, os problemas com entradas de texto não parecem se aplicar aqui.
Oliver

que tal textareas?
Francisco Corrales Morales

@FranciscoCorralesMorales não importa o tipo do campo de entrada - o que conta é o resultado final, a soma de todos os dados que você está enviando
Pekka

Descobri que o Safari truncou a entrada oculta. Usar uma textarea resolveu o problema.
Brendon Muir

29

Aviso! Tive problemas <input type="text">quando o texto é maior que 65535 (tamanho máximo do int assinado)

Colar o texto parece causar algum excesso de conteúdo estranho. Identificado no webkit.

[editar]

O tamanho da solicitação GET não é exatamente limitado da maneira que Pekka escreveu. Há um limite de 2083 bytes para toda a string de consulta GET apenasaddress?params no Internet Explorer. Em outros navegadores, praticamente não há limite, com o FireFox enviando consultas GET de mais de 100 KB, por exemplo. Obviamente, o servidor deve permitir isso.

Não é coberto pela documentação, então é necessário testá-lo para saber os limites de outros navegadores. IE: http://support.microsoft.com/kb/208427


8
+1 Eu criei este jsFiddle para testar o que acontece quando você define um valor de entrada para uma string muito longa: jsfiddle.net/3TVPL/6 Eu usei uma string de 65537 caracteres. Em meus testes, o Crome 24.0.1312 e o Safari 5.1.7 para Windows mostram as caixas de entrada vazias após definir o valor dessa string. O Chrome mostra o valor não vazio adequado se eu reduzir a string para 65536 caracteres. Outros navegadores (Firefox 17, IE8, IE9, IE10, Opera 12.12) não tiveram nenhum problema mesmo com strings muito mais longas (subi até cerca de 1,2 Mb de string)
beluga

@beluga ótimo trabalho. alguma opinião sobre desempenho? Na minha máquina fraca, foi uma longa espera. Acho que é por isso que o webkit não renderiza isso.
naugtur

Bom ponto, talvez. Eu não fiz nenhum teste de desempenho neste momento. Tenho uma máquina bem reforçada no trabalho e não percebi nenhum atraso em nenhum dos navegadores.
beluga de

Fez meu FF inutilizável por uns 5 minutos. Colocar tudo isso em um campo de formulário não é uma boa ideia de qualquer maneira :)
naugtur

Navegadores móveis e proxies também podem truncar campos ocultos
George Filippakos
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.