Я чув, що HTTP POST не має обмежень щодо специфікації в обсязі даних, яким він може бути надісланий Це правда чи існує просто якась справді висока межа?
Відповіді:
EDIT (2019) Ця відповідь зараз досить зайва, але є ще одна відповідь із більш відповідною інформацією.
Це швидше залежить від веб-сервера та веб-браузера:
Internet Explorer Всі версії 2GB-1
Mozilla Firefox Всі версії 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1
Хоча IIS за замовчуванням підтримує лише 200 КБ, метабаза потребує змін, щоб збільшити це.
http://www.motobit.com/help/scptutl/pa98.htm
Сам метод POST не обмежує розмір даних.
Досить дивно, як усі відповіді говорять про IIS, ніби це єдиний веб-сервер, який має значення. Навіть у 2010 році, коли було задано питання, Apache мав від 60% до 70% частки ринку . У будь-якому разі,
min(serverMaximumSize, clientMaximumSize)
.Ось розміри основного тексту POST для деяких найпопулярніших серверів HTTP:
Відповідно до самого протоколу HTTP немає обмежень, але реалізації матимуть практичну верхню межу. Я надіслав дані, що перевищують 4 ГБ, за допомогою POST до Apache, але на той час деякі сервери мали обмеження в 4 ГБ.
LimitRequestBody
директиви.
POST дозволяє довільну довжину даних надсилати на сервер, але існують обмеження, що залежать від часу очікування / пропускної здатності тощо.
Я думаю, що, в основному, безпечніше вважати, що надсилати багато даних неправильно .
Відповідно до цієї (тепер видаленої) статті різні веб-сервери IIS можуть обробляти різні обсяги даних у „заголовку”; http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;
Зауважте, що немає обмежень на кількість елементів FORM, які можна передати через POST, а лише на сукупний розмір усіх пар ім’я / значення. Незважаючи на те, що GET обмежується до 1024 символів, дані POST обмежуються 2 МБ на IIS 4.0 та 128 КБ на IIS 5.0. Кожне ім'я / значення обмежується 1024 символами, як це передбачено специфікацією SGML. Звичайно, це не стосується файлів, завантажених за допомогою enctype = 'multipart / form-data' ... У мене не було проблем із завантаженням файлів у діапазоні 90-100 Мб за допомогою IIS 5.0, окрім необхідності збільшувати значення server.scriptTimeout а також моє терпіння!
У програмі, яку я розробляв, я натрапив на, здавалося, обмеження POST близько 2 КБ. Виявилося, що я випадково закодував параметри в URL-адресу, а не передав їх у тілі. Отже, якщо ви зіткнулися з проблемою там, то, безумовно, існує дуже мала межа розміру даних POST, які ви можете надіслати закодованими в URL-адресу.
HTTP може не мати верхньої межі, але веб-сервери можуть мати її. В ASP.NET за замовчуванням встановлено обмеження прийому за замовчуванням 4 МБ, але ви (розробник / веб-майстер) можете змінити це значення на вище або нижче.