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?
zagłosuj na wzmiankę o Metabase.XML i wymieniłem różne sposoby zmiany limitu rozmiaru wysyłanych plików, ponieważ może to być przydatne.
Durai Amuthan.H
Wprowadzenie następującego polecenia w wierszu poleceń pomaga zwiększyć limit rozmiaru wysyłanego pliku. ”Cscript C: \ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (w bajtach) odniesienie: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H
lub znajdź metabase.xml w C: \ windows \ sytem32 \ inetserv \ ścieżka i edytuj, ale upewnij się, że włączono opcję Włącz bezpośrednią edycję metabazy. odniesienie: banmanpro.com/support2/file_upload_limits.asp
W przypadku obecnych serwerów internetowych (2019) zobacz tę odpowiedź .
Dan Dascalescu
87
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,
Protokół HTTP nie określa limitu.
Metoda POST pozwala na przesłanie znacznie większej ilości danych niż metoda GET, która jest ograniczona długością adresu URL - około 2KB.
Maksymalny rozmiar treści żądania POST jest konfigurowany na serwerze HTTP i zwykle wynosi od 1 MB do 2 GB
Klient HTTP (przeglądarka lub inny agent użytkownika) może mieć własne ograniczenia. Dlatego maksymalny rozmiar żądania treści POST to min(serverMaximumSize, clientMaximumSize).
Oto rozmiary treści POST dla niektórych bardziej popularnych serwerów HTTP:
Spośród odpowiedzi, które wspominają o serwerze internetowym, dwie wspominają o IIS, a jedna o Apache. W każdym razie zredagowałem moją odpowiedź na drogowskaz do Twojej, która jest bardziej kompletna i aktualna.
David Neale
3
Dziękuję @DavidNeale! Powinien istnieć odznaka :) Postaram się aktualizować tę odpowiedź. Właśnie dodałem maksimum dla nginx.
Dan Dascalescu
O tym: „więcej danych niż metoda GET, która jest ograniczona długością adresu URL - około 2 KB”. A co z nagłówkami? Z tego posta wynika, że nagłówki pozwalają na około 8-16 KB.
Hans Vonn
27
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.
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ść!
Dobra edycja @Matt - pokazuje znaczenie wycinania najistotniejszych faktów zamiast ślepego łączenia
amelvin
1
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.
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.
źródło
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,
1 MB do 2 GB
min(serverMaximumSize, clientMaximumSize)
.Oto rozmiary treści POST dla niektórych bardziej popularnych serwerów HTTP:
źródło
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.
źródło
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ódło
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;źródło
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.
źródło
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.
źródło