Słyszałem, że protokół HTTP POST nie ma określonego limitu rozmiaru danych, przez który może zostać wysłany. Czy to prawda, czy jest tylko naprawdę wysoki limit?
Odpowiedzi:
EDYCJA (2019) Ta odpowiedź jest teraz dość zbędna, ale jest inna odpowiedź z bardziej istotnymi informacjami.
Zależy to raczej od serwera WWW i przeglądarki internetowej:
Internet Explorer Wszystkie wersje 2 GB-1
Mozilla Firefox Wszystkie wersje 2 GB-1
IIS 1-5 2 GB-1
IIS 6 4 GB-1
Chociaż usługi IIS domyślnie obsługują tylko 200 KB, metabaza wymaga zmiany, aby to zwiększyć.
http://www.motobit.com/help/scptutl/pa98.htm
Sama metoda POST nie ma żadnego ograniczenia rozmiaru danych.
Całkiem zdumiewające, jak wszystkie odpowiedzi mówią o IIS, jakby to był jedyny serwer sieciowy, który miał znaczenie. Już w 2010 roku, kiedy zadano to pytanie, Apache miał od 60% do 70% udziału w rynku . Tak czy inaczej,
min(serverMaximumSize, clientMaximumSize)
.Oto rozmiary treści POST dla niektórych bardziej popularnych serwerów HTTP:
Nie ma ograniczeń zgodnie z samym protokołem HTTP, ale implementacje będą miały praktyczny górny limit. Wysłałem dane przekraczające 4 GB za pomocą POST do Apache, ale niektóre serwery miały wówczas limit 4 GB.
LimitRequestBody
dyrektywę.
POST pozwala na wysyłanie danych na serwer o dowolnej długości, ale istnieją ograniczenia związane z limitami czasu / przepustowością itp.
Zasadniczo uważam, że bezpieczniej jest założyć, że wysyłanie dużej ilości danych nie jest w porządku.
Różne serwery internetowe IIS mogą przetwarzać różne ilości danych w „nagłówku”, zgodnie z tym (teraz usuniętym) artykułem; http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;
Zwróć uwagę, że nie ma ograniczeń co do liczby elementów FORM, które można przekazać za pomocą POST, a jedynie do zagregowanego rozmiaru wszystkich par nazwa / wartość. Podczas gdy GET jest ograniczony do zaledwie 1024 znaków, dane POST są ograniczone do 2 MB w IIS 4.0 i 128 KB w IIS 5.0. Każda nazwa / wartość jest ograniczona do 1024 znaków, zgodnie ze specyfikacją SGML. Oczywiście nie dotyczy to plików przesyłanych za pomocą enctype = 'multipart / form-data' ... Nie miałem żadnych problemów z przesyłaniem plików w zakresie 90-100 MB przy użyciu IIS 5.0, poza koniecznością zwiększenia wartości server.scriptTimeout jak również moja cierpliwość!
W aplikacji, którą tworzyłem, napotkałem limit POST wynoszący około 2KB. Okazało się, że przypadkowo zakodowałem parametry w adresie URL zamiast przekazywać je w treści. Więc jeśli napotkasz tam problem, z pewnością istnieje bardzo mały limit rozmiaru danych POST, które możesz wysłać zakodowane do adresu URL.
HTTP może nie mieć górnego limitu, ale serwery WWW mogą go mieć. W ASP.NET istnieje domyślny limit akceptacji wynoszący 4 MB, ale Ty (programista / webmaster) możesz go zmienić na wyższy lub niższy.