Я слышал, что HTTP POST не имеет ограничений по размеру данных, которые он может отправлять. Это правда или есть какой-то очень высокий предел?
Ответы:
РЕДАКТИРОВАТЬ (2019) Этот ответ теперь довольно избыточен, но есть еще один ответ с более актуальной информацией.
Это скорее зависит от веб-сервера и веб-браузера:
Internet Explorer Все версии 2 ГБ-1
Mozilla Firefox Все версии 2 ГБ-1
IIS 1-5 2 ГБ-1
IIS 6 4 ГБ-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 МБ, но вы (разработчик / веб-мастер) можете изменить это значение на большее или меньшее.