Я слышал, что HTTP POST не имеет предела спецификации в размере данных, по которому он может быть отправлен. Это правда или просто какой-то действительно высокий предел?
Может ли HTTP POST быть безграничным?
Ответ 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-серверов:
- Ngix (наибольшая доля рынка веб-серверов по состоянию на апрель 2019 г.) - по умолчанию 1 МБ, практического максимума нет (2 ** 63)
- Apache - максимум 2 ГБ, документация по умолчанию отсутствует
- IIS - по умолчанию 28,6 МБ для длины запроса, 2048 байт для строки запроса; максимально недокументированный
- InfluxDB - по умолчанию ~ 25 МБ, максимум недокументировано
Ответ 6
В приложении, которое я разрабатывал, я столкнулся с тем, что оказалось пределом POST около 2 КБ. Оказалось, что я случайно кодировал параметры в URL, а не передавал их в теле. Так что, если у вас запущена проблема, существует определенная ограниченность ограничений размера данных POST, которые вы можете отправить в URL.
Ответ 7
HTTP может не иметь верхнего предела, но веб-серверы могут иметь его. В ASP.NET установлен допустимый предел по умолчанию, равный 4 МБ, но вы (разработчик/веб-мастер) можете изменить его на большее или меньшее.