Может ли HTTP POST быть безграничным? - PullRequest
49 голосов
/ 21 мая 2010

Я слышал, что HTTP POST не имеет предела спецификации в размере данных, по которому он может быть отправлен. Это правда или просто какой-то действительно высокий предел?

Ответы [ 7 ]

45 голосов
/ 21 мая 2010

РЕДАКТИРОВАТЬ (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 не имеет ограничений на размер данных.

22 голосов
/ 21 мая 2010

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

12 голосов
/ 06 мая 2019

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

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

Ниже приведены размеры тела POST для некоторых наиболее популярных HTTP-серверов:

5 голосов
/ 21 мая 2010

POST допускает отправку на сервер произвольной длины данных, но существуют ограничения, основанные на тайм-аутах / пропускной способности и т. Д.

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

2 голосов
/ 21 мая 2010

Различные веб-серверы 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а также мое терпение!

0 голосов
/ 05 августа 2016

В приложении, которое я разрабатывал, я столкнулся с тем, что оказалось POST-пределом около 2 КБ. Оказалось, что я случайно кодировал параметры в URL, а не передавал их в теле. Поэтому, если вы столкнулись с проблемой, определенно существует очень небольшое ограничение на размер POST-данных, которые вы можете отправлять в кодировке URL.

0 голосов
/ 21 мая 2010

HTTP может не иметь верхнего предела, но веб-серверы могут иметь его. В ASP.NET установлен допустимый предел по умолчанию, равный 4 МБ, но вы (разработчик / веб-мастер) можете изменить его на большее или меньшее.

...