Подтвердить что ты не робот

Может ли HTTP POST быть безграничным?

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

4b9b3361

Ответ 1

РЕДАКТИРОВАТЬ (2019) Этот ответ в настоящее время довольно излишним, но есть другой ответ с более актуальной информацией.

Это скорее зависит от веб-сервера и веб-браузера:

Интернет-проводник Все версии 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 не имеет ограничений на размер данных.

Ответ 2

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

Ответ 3

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

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

Ответ 4

Различные веб-серверы IIS могут обрабатывать разные объемы данных в "заголовке" в соответствии с этой (теперь удаленной) статьей; http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html;

Обратите внимание, что на количество элементов FORM, которые вы можете пройти через POST, но только по совокупности размер всех пар имя/значение. В то время как GET ограничено до 1024 символов, данные POST ограничены 2 MB на IIS 4.0 и 128 КБ на IIS 5.0. Каждое имя/значение ограничено 1024 символов, наложенных SGML спекуляция Конечно, это не относится к файлы, загруженные с использованием enctype = 'multipart/form-data'... я не было проблем с загрузкой файлов в диапазоне 90-100 МБ с использованием IIS 5.0, кроме необходимости увеличить значение server.scriptTimeout, а также мое терпение!

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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