HTTP POST sınırsız olabilir mi?


Yanıtlar:


75

DÜZENLEME (2019) Bu cevap artık oldukça gereksiz ancak daha alakalı bilgiler içeren başka bir cevap var.

Daha çok web sunucusuna ve web tarayıcısına bağlıdır:

İnternet gezgini Tüm sürümler 2GB-1
Mozilla Firefox Tüm sürümler 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1

IIS varsayılan olarak yalnızca 200 KB'yi desteklese de, metatabanının bunu artırmak için değiştirilmesi gerekir.

http://www.motobit.com/help/scptutl/pa98.htm

POST yönteminin kendi başına veri boyutu konusunda herhangi bir sınırı yoktur.


Metabase.XML'den bahsetmek için oy verin ve yararlı olabileceği için dosya yükleme boyutu sınırını değiştirmenin çeşitli yollarını listeledim.
Durai Amuthan. H

Komut istemine aşağıdaki komutun girilmesi, dosya yükleme boyutu sınırının artmasına yardımcı olur. "Cscript C: \ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (bayt cinsinden) başvuru: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan. H

veya C: \ windows \ sytem32 \ inetserv \ yolunda metabase.xml dosyasını bulun ve düzenleyin, ancak Doğrudan metatabanı düzenlemeyi etkinleştirin etkin olduğundan emin olun. referans
Durai Amuthan

veya web.config olarak, System.Web altında bir satır ekleyin <httpRuntime executionTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan. H

Mevcut (2019) web sunucuları için bu yanıta bakın .
Dan Dascalescu

76

Sanki önemli olan tek web sunucusuymuş gibi, tüm yanıtların IIS hakkında konuşması oldukça şaşırtıcı. Hatta 2010 yılında geri sorulduğu zaman, Apache arasındaki vardı % 60 ve pazar payı% 70 . Her neyse,

  • HTTP protokolü bir sınır belirtmez.
  • POST yöntemi, URL uzunluğuyla sınırlı olan GET yönteminden çok daha fazla veri göndermeye izin verir - yaklaşık 2KB.
  • Maksimum POST isteği gövde boyutu HTTP sunucusunda yapılandırılır ve genellikle 1MB ile 2GB arasında değişir.
  • HTTP istemcisinin (tarayıcı veya diğer kullanıcı aracısı) kendi sınırlamaları olabilir. Bu nedenle, maksimum POST gövde isteği boyutu min(serverMaximumSize, clientMaximumSize).

Daha popüler HTTP sunucularının bazıları için POST gövde boyutları şunlardır:


4
Bir web sunucusundan bahseden bu cevaplardan ikisi IIS'den ve biri Apache'den bahsediyor. Her neyse, daha eksiksiz ve güncel olan sizinkine işaret etmek için cevabımı düzenledim.
David Neale

3
Teşekkür ederim @DavidNeale! Bunun için bir rozet olmalı :) Bu cevabı güncel tutmaya çalışacağım. Az önce nginx için maksimum değer eklendi.
Dan Dascalescu

Bu konuda: "URL uzunluğuyla sınırlı olan GET yönteminden daha fazla veri - yaklaşık 2 KB." Peki ya başlıklar? Bu gönderi başına , başlıkların yaklaşık 8-16KB'ye izin verdiği anlaşılıyor.
Hans Vonn

27

HTTP protokolünün kendisine göre bir sınır yoktur, ancak uygulamaların pratik bir üst sınırı olacaktır. POST kullanarak Apache'ye 4 GB'yi aşan verileri gönderdim, ancak bazı sunucuların o anda 4 GB sınırı vardı.


4GB hala Apache için maksimum mu? Ben ettik o belgelenmiş bulunan 2GB olmak.
Dan Dascalescu

@DanDascalescu: Bilmiyorum, bunu uzun zamandır yapmadım. Belki de LimitRequestBodydirektife bir üst sınır getirmeye başladılar .
Greg Hewgill

6

POST, bir sunucuya rastgele uzunlukta veri gönderilmesine izin verir, ancak zaman aşımına / bant genişliğine vb. Bağlı sınırlamalar vardır.

Temel olarak, çok fazla veri göndermenin uygun olmadığını varsaymak daha güvenlidir .


2
Zaman aşımları için ne kadar tehlikeli hale geldiğine dair pratik kurallar var mı?
vextorspace

3

Bu (artık silinmiş) makaleye göre, farklı IIS web sunucuları 'başlıkta' farklı miktarlarda veri işleyebilir; http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;

POST aracılığıyla iletebileceğiniz FORM öğelerinin sayısında bir sınır olmadığını, yalnızca tüm ad / değer çiftlerinin toplam boyutunda bir sınır olmadığını unutmayın. GET, 1024 karakter kadar düşük olmakla birlikte, POST verileri IIS 4.0'da 2 MB ve IIS 5.0'da 128 KB ile sınırlıdır. Her ad / değer, SGML spesifikasyonuna göre 1024 karakterle sınırlıdır. Elbette bu, enctype = 'multipart / form-data' kullanılarak yüklenen dosyalar için geçerli değildir ... IIS 5.0 kullanarak 90 - 100 MB aralığındaki dosyaları yüklerken, sunucuyu artırma zorunluluğunun yanı sıra hiçbir sorun yaşamadım. ScriptTimeout değeri hem de sabrım!


1
İyi düzenleme @Matt - körü körüne bağlantı
kurmak

1

Geliştirmekte olduğum bir uygulamada, yaklaşık 2KB'lik bir POST sınırı gibi görünen bir şeye rastladım. Parametreleri gövdeden geçirmek yerine yanlışlıkla URL'ye kodladığım ortaya çıktı. Dolayısıyla, orada bir sorunla karşılaşırsanız, URL'ye kodlanmış olarak gönderebileceğiniz POST verilerinin boyutunda kesinlikle çok küçük bir sınır vardır.


0

HTTP'nin bir üst sınırı olmayabilir, ancak web sunucularının bir üst sınırı olabilir. ASP.NET'te varsayılan 4 MB kabul sınırı vardır, ancak siz (geliştirici / web yöneticisi) bunu daha yüksek veya daha düşük olacak şekilde değiştirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.