Чи може HTTP POST бути безмежним?


Відповіді:


75

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 не обмежує розмір даних.


“за” за згадку про Metabase.XML, і я перерахував різні способи зміни обмеження розміру файлу для завантаження, оскільки це може бути корисним.
Дурай Амутан. H

Введення наступну команду в командному рядку допомагає збільшити граничний розмір файлу для завантаження "Cscript C: \ Inetpub \ AdminScripts \ adsutil.vbs набір w3svc / ASPMaxRequestEntityAllowed 10484880". (В байтах) посилання: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Дурай Амутан. H

або знайдіть metabase.xml у C: \ windows \ sytem32 \ inetserv \ path та відредагуйте, але переконайтеся, що увімкнено Пряме редагування метабази. посилання: banmanpro.com/support2/file_upload_limits.asp
Durai Amuthan. H

або в вашому файлі web.config додайте рядок під system.web <httpRuntime ExecutionTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Амутан. H

Поточні веб-сервери (2019) див. У цій відповіді .
Дан Даскалеску,

76

Досить дивно, як усі відповіді говорять про IIS, ніби це єдиний веб-сервер, який має значення. Навіть у 2010 році, коли було задано питання, Apache мав від 60% до 70% частки ринку . У будь-якому разі,

  • Протокол HTTP не визначає обмеження.
  • Метод POST дозволяє надсилати набагато більше даних, ніж метод GET, який обмежений довжиною URL-адреси - близько 2 КБ.
  • Максимальний розмір тіла запиту POST налаштовується на сервері HTTP і зазвичай становить від
    1 МБ до 2 ГБ
  • Клієнт HTTP (браузер або інший агент користувача) може мати свої власні обмеження. Таким чином, максимальний розмір запиту тіла POST становить min(serverMaximumSize, clientMaximumSize).

Ось розміри основного тексту POST для деяких найпопулярніших серверів HTTP:


4
З тих відповідей, де згадується веб-сервер, дві згадують IIS, а одна - Apache. У будь-якому випадку, я відредагував мою відповідь на дороговказ до вашого, який є більш повним та сучасним.
Девід Ніл

3
Дякую @DavidNeale! Для цього повинен бути знак :) Я постараюся, щоб ця відповідь була оновлена. Просто додав максимум для nginx.
Дан Даскалеску,

Про це: "більше даних, ніж метод GET, який обмежений довжиною URL-адреси - близько 2 КБ". А як щодо заголовків? Згідно з цим повідомленням , заголовки дозволяють приблизно 8-16 КБ.
Ганс Вонн,

27

Відповідно до самого протоколу HTTP немає обмежень, але реалізації матимуть практичну верхню межу. Я надіслав дані, що перевищують 4 ГБ, за допомогою POST до Apache, але на той час деякі сервери мали обмеження в 4 ГБ.


Чи є 4 Гб як і раніше максимальним для Apache? Я виявив, що це зафіксовано 2 Гб.
Дан Даскалеску,

@DanDascalescu: Я не знаю, я давно цього не робив. Можливо, вони почали вводити верхню межу LimitRequestBodyдирективи.
Грег Хьюгілл,

6

POST дозволяє довільну довжину даних надсилати на сервер, але існують обмеження, що залежать від часу очікування / пропускної здатності тощо.

Я думаю, що, в основному, безпечніше вважати, що надсилати багато даних неправильно .


2
Чи існують емпіричні правила щодо того, скільки стає небезпечним для тайм-аутів тощо?
vextorspace

3

Відповідно до цієї (тепер видаленої) статті різні веб-сервери 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 а також моє терпіння!


1
Хороша редакція @Matt - показує важливість усунення важливих фактів, а не
сліпих

1

У програмі, яку я розробляв, я натрапив на, здавалося, обмеження POST близько 2 КБ. Виявилося, що я випадково закодував параметри в URL-адресу, а не передав їх у тілі. Отже, якщо ви зіткнулися з проблемою там, то, безумовно, існує дуже мала межа розміру даних POST, які ви можете надіслати закодованими в URL-адресу.


0

HTTP може не мати верхньої межі, але веб-сервери можуть мати її. В ASP.NET за замовчуванням встановлено обмеження прийому за замовчуванням 4 МБ, але ви (розробник / веб-майстер) можете змінити це значення на вище або нижче.

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