есть ли максимальный размер для скрытого ввода в html?

93

другими словами:

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

и если да, то что это?

спругман
источник
7
Лучший способ задать вопрос, который я когда-либо видел.
Андрес Моралес

Ответы:

60

Это зависит от способа отправки формы.

При использовании GET существует общепринятый лимит около 1-2 килобайт, в зависимости от ограничений браузера и сервера.

При использовании POST в браузере нет технических ограничений, но обычно они устанавливаются на стороне сервера - см., Например, Apache LimitRequestBody, PHP post_max_sizeи так далее.

Пекка
источник
Остерегайтесь проблем, указанных ниже @naugtur для полей ввода текста - по крайней мере, для тех, которые существуют технические ограничения, налагаемые различными браузерами.
Оливер
Я только что провел несколько тестов в трех современных браузерах (IE9, FF 10 ESR, Chrome 24), и все они без проблем отправили скрытые входные значения размером 100 КБ. Так что проблемы с вводом текста, похоже, здесь не применимы.
Оливер
как насчет textareaс?
Франсиско Корралес Моралес,
@FranciscoCorralesMorales, неважно, какого типа поле ввода - важен конечный результат, сумма всех отправляемых вами данных
Пекка
Я обнаружил, что Safari усек скрытый ввод. Использование текстового поля решило проблему.
Брендон Мьюир
29

Предупреждение! У меня возникли проблемы, <input type="text">когда текст длиннее 65535 (максимальный размер подписанного int)

Кажется, что вставка текста вызывает какое-то странное переполнение содержимого. Обнаружен в webkit.

[редактировать]

Размер GET-запроса точно не ограничен, как писал Пекка. Толькоaddress?params в Internet Explorer существует ограничение в 2083 байта для всей строки запроса GET. В других браузерах ограничений практически нет, например, FireFox отправляет запросы GET размером более 100 КБ. Очевидно, сервер должен их разрешить.

Это не описано в документации, поэтому нужно протестировать его, чтобы узнать ограничения для других браузеров. IE: http://support.microsoft.com/kb/208427

Naugtur
источник
8
+1 Я создал этот jsFiddle, чтобы проверить, что происходит, когда вы устанавливаете входное значение в очень длинную строку: jsfiddle.net/3TVPL/6 Я использовал строку длиной 65537 символов. В моем тестировании Crome 24.0.1312 и Safari 5.1.7 для Windows показывают поля ввода как пустые после установки значения в эту строку. Chrome показывает правильное непустое значение, если я уменьшу строку до 65536 символов. В других браузерах (Firefox 17, IE8, IE9, IE10, Opera 12.12) проблем не возникало даже со строками намного длиннее (я поднял строку примерно до 1,2 Мб)
beluga
@beluga отличная работа. есть мысли по производительности? На моей слабой машине ждать пришлось долго. Я думаю, поэтому webkit этого не отображает.
naugtur
Может быть, хорошая мысль. В то время я не проводил никаких тестов производительности. У меня на работе довольно мощная машина, и я не заметил никаких задержек ни в одном из браузеров.
beluga
Это сделало мой FF непригодным для использования примерно на 5 минут. В любом случае
помещать
Мобильные браузеры и прокси также могут обрезать скрытые поля
Джордж Филиппакос,