чи існує максимальний розмір довжини прихованого вводу в html?


92

іншими словами:

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

і якщо так, то що це?


6
Найкращий метод запитань, який я коли-небудь бачив.
Андрес Моралес

Відповіді:


59

Це залежить від методу, яким ви надсилаєте форму.

З GET існує загально узгоджене обмеження близько 1-2 кілобайт, залежно від обмежень браузера та сервера.

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


Остерігайтеся проблем, на які вказав @naugtur нижче для полів введення тексту - принаймні для тих, що існують технічні обмеження, встановлені різними браузерами.
Олівер

Я щойно провів кілька тестів на 3 дещо сучасних браузерах (IE9, FF 10 ESR, Chrome 24), і всі вони без проблем подали приховані вхідні значення 100 КБ. Тож проблеми із введенням тексту тут, здається, не стосуються.
Олівер


@FranciscoCorralesMorales, не має значення, якого типу є поле введення - головним є кінцевий результат, сума всіх даних, які ви надсилаєте
Pekka

Я виявив, що Safari усікає прихований ввід. Використання текстової області вирішило проблему.
Brendon Muir

29

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

Вставка тексту, здається, спричиняє дивне переповнення вмісту. Помічено у веб-комплекті.

[редагувати]

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

Це не охоплено документацією, тому його потрібно протестувати, щоб знати обмеження для інших браузерів. IE: http://support.microsoft.com/kb/208427


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 хвилин. Помістити це стільки у поле форми - це і так не гарна ідея :)
naugtur

Мобільні браузери та проксі-сервери також можуть усікати приховані поля
Джордж Філіппакос
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.