¿Existe un tamaño máximo para la longitud de una entrada oculta en html?

92

en otras palabras:

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

¿Y si es así, qué es?

sprugman
fuente
6
El mejor método de pregunta que he visto.
Andrés Morales

Respuestas:

59

Depende del método con el que envíe el formulario.

Con GET, existe un límite comúnmente acordado de aproximadamente 1-2 kilobytes, dependiendo de las limitaciones del navegador y del servidor.

Con POST, no hay límite técnico en el navegador, pero generalmente uno en el lado del servidor - ver, por ejemplo, Apache LimitRequestBody, PHP post_max_sizey así sucesivamente.

Pekka
fuente
Tenga cuidado con los problemas señalados por @naugtur a continuación para los campos de entrada de texto; al menos para aquellos, existen límites técnicos impuestos por diferentes navegadores.
Oliver
Acabo de ejecutar algunas pruebas en 3 navegadores algo actuales (IE9, FF 10 ESR, Chrome 24) y todos enviaron valores de entrada ocultos de 100 KB sin ningún problema. Entonces, los problemas con las entradas de texto no parecen aplicarse aquí.
Oliver
¿qué tal textareas?
Francisco Corrales Morales
@FranciscoCorralesMorales no importa de qué tipo sea el campo de entrada, lo que cuenta es el resultado final, la suma de todos los datos que estás enviando
Pekka
Descubrí que Safari truncó la entrada oculta. Usar un área de texto resolvió el problema.
Brendon Muir
29

¡Advertencia! He tenido problemas <input type="text">cuando el texto es más largo que 65535 (tamaño máximo de int firmado)

Pegar el texto parece causar un extraño desbordamiento de contenido. Visto en webkit.

[editar]

El tamaño de la solicitud GET no está exactamente limitado como escribió Pekka. Hay un límite de 2083 bytes para toda la cadena de consulta GET soloaddress?params en Internet Explorer. En otros navegadores prácticamente no hay límite, con FireFox enviando consultas GET de más de 100 KB, por ejemplo. Obviamente, el servidor tiene que permitirlos.

No está cubierto en la documentación, por lo que hay que probarlo para conocer los límites de otros navegadores. IE: http://support.microsoft.com/kb/208427

naugtur
fuente
8
+1 He creado este jsFiddle para probar lo que sucede cuando configuras un valor de entrada en una cadena muy larga: jsfiddle.net/3TVPL/6 He usado una cadena de 65537 caracteres de longitud. En mis pruebas, Crome 24.0.1312 y Safari 5.1.7 para Windows muestran cuadros de entrada vacíos después de establecer el valor en esa cadena. Chrome muestra el valor correcto no vacío si reduzco la cadena a 65536 caracteres de longitud. Otros navegadores (Firefox 17, IE8, IE9, IE10, Opera 12.12) no tuvieron ningún problema incluso con cadenas mucho más largas (subí hasta aproximadamente 1.2 Mb de cadena)
beluga
@beluga gran trabajo. ¿Alguna idea sobre el rendimiento? En mi débil máquina fue una larga espera. Supongo que es por eso que webkit no representa eso.
naugtur
Buen punto, tal vez. No hice ninguna prueba de rendimiento en este momento. Tengo una máquina bastante reforzada en el trabajo y no noté ningún retraso en ninguno de los navegadores.
beluga
Hizo que mi FF fuera inutilizable durante unos 5 minutos. Poner todo esto en un campo de formulario no es una buena idea de todos modos :)
naugtur
Los navegadores y proxies móviles también pueden truncar campos ocultos
George Filippakos