Bisakah HTTP POST tidak terbatas?

Jawaban:

75

EDIT (2019) Jawaban ini sekarang cukup berlebihan tetapi ada jawaban lain dengan informasi yang lebih relevan.

Ini lebih tergantung pada server web dan browser web:

Internet explorer Semua versi 2GB-1
Mozilla Firefox Semua versi 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1

Meskipun IIS hanya mendukung 200 KB secara default, metabase perlu diubah untuk meningkatkannya.

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

Metode POST itu sendiri tidak memiliki batasan ukuran data.

David Neale
sumber
upvote untuk menyebutkan Metabase.XML dan saya telah mencantumkan berbagai cara untuk mengubah batas ukuran unggahan file karena mungkin berguna.
Durai Amuthan. H
Memasukkan perintah berikut di prompt perintah membantu meningkatkan batas ukuran unggahan file. "Cscript C: \ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (dalam byte) referensi: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan. H
atau temukan metabase.xml di C: \ windows \ sytem32 \ inetserv \ path dan edit tetapi pastikan Enable Direct metabase edit diaktifkan.reference: banmanpro.com/support2/file_upload_limits.asp
Durai Amuthan.H
atau Di web.config Anda, tambahkan baris di bawah sistem Anda ..web <httpRuntime executionTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H
Untuk server web saat ini (2019), lihat jawaban ini .
Dan Dascalescu
76

Sungguh menakjubkan bagaimana semua jawaban berbicara tentang IIS, seolah-olah itu adalah satu-satunya server web yang penting. Bahkan di tahun 2010 ketika pertanyaan itu diajukan, Apache memiliki antara 60% dan 70% pangsa pasar . Bagaimanapun,

  • Protokol HTTP tidak menetapkan batas.
  • Metode POST memungkinkan pengiriman lebih banyak data daripada metode GET, yang dibatasi oleh panjang URL - sekitar 2KB.
  • Ukuran badan permintaan POST maksimum dikonfigurasikan di server HTTP dan biasanya berkisar dari
    1MB hingga 2GB
  • Klien HTTP (browser atau agen pengguna lain) dapat memiliki batasannya sendiri. Oleh karena itu, ukuran permintaan badan POST maksimum adalah min(serverMaximumSize, clientMaximumSize).

Berikut adalah ukuran badan POST untuk beberapa server HTTP yang lebih populer:

Dan Dascalescu
sumber
4
Dari jawaban tersebut yang menyebutkan satu webserver dua menyebutkan IIS dan satu menyebutkan Apache. Pokoknya sudah edit jawaban saya untuk plang menuju milik Anda yang lebih lengkap dan up to date.
David Neale
3
Terima kasih @DavidNeale! Harus ada lencana untuk itu :) Saya akan mencoba untuk terus memperbarui jawaban ini. Baru saja menambahkan maksimum untuk nginx.
Dan Dascalescu
Tentang ini: "lebih banyak data daripada metode GET, yang dibatasi oleh panjang URL - sekitar 2KB." Bagaimana dengan header? Per posting ini tampaknya header memungkinkan sekitar 8-16KB.
Hans Vonn
27

Tidak ada batasan menurut protokol HTTP itu sendiri, tetapi penerapannya akan memiliki batas atas praktis. Saya telah mengirim data melebihi 4 GB menggunakan POST ke Apache, tetapi beberapa server memang memiliki batas 4 GB pada saat itu.

Greg Hewgill
sumber
Apakah 4GB masih maksimal untuk Apache? Saya telah menemukan itu didokumentasikan menjadi 2GB.
Dan Dascalescu
@DanDascalescu: Saya tidak tahu, saya sudah lama tidak melakukan ini. Mungkin mereka mulai memberlakukan batas atas LimitRequestBodyperintah tersebut.
Greg Hewgill
6

POST memungkinkan panjang data yang berubah-ubah untuk dikirim ke server, tetapi ada batasan berdasarkan batas waktu / bandwidth, dll.

Saya pikir pada dasarnya, lebih aman untuk berasumsi bahwa mengirim banyak data tidak boleh.

Russ Clarke
sumber
2
Apakah ada aturan praktis tentang seberapa berbahaya untuk batas waktu dan semacamnya?
vextorspace
3

Server web IIS yang berbeda dapat memproses jumlah data yang berbeda di 'header', menurut artikel ini (sekarang dihapus); http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;

Perhatikan bahwa tidak ada batasan jumlah elemen FORM yang dapat Anda berikan melalui POST, tetapi hanya pada ukuran agregat dari semua pasangan nama / nilai. Sementara GET dibatasi hingga serendah 1024 karakter, data POST dibatasi hingga 2 MB pada IIS 4.0, dan 128 KB pada IIS 5.0. Setiap nama / nilai dibatasi hingga 1024 karakter, seperti yang diberlakukan oleh spesifikasi SGML. Tentu saja ini tidak berlaku untuk file yang diunggah menggunakan enctype = 'multipart / form-data' ... Saya tidak mengalami masalah saat mengunggah file dalam rentang 90 - 100 MB menggunakan IIS 5.0, selain harus meningkatkan nilai server.scriptTimeout serta kesabaran saya!

amelvin
sumber
1
Hasil edit yang bagus @Matt - menunjukkan pentingnya memotong fakta yang menonjol daripada menghubungkannya secara membabi buta
amelvin
1

Dalam sebuah aplikasi yang saya kembangkan, saya menemukan apa yang tampaknya menjadi batas POST sekitar 2KB. Ternyata saya tidak sengaja menyandikan parameter ke dalam URL alih-alih meneruskannya di badan. Jadi jika Anda mengalami masalah di sana, pasti ada batasan yang sangat kecil pada ukuran data POST yang dapat Anda kirim yang dikodekan ke dalam URL.

brycejl.dll
sumber
0

HTTP mungkin tidak memiliki batas atas, tetapi server web mungkin memilikinya. Di ASP.NET ada batas penerimaan default sebesar 4 MB, tetapi Anda (pengembang / webmaster) dapat mengubahnya menjadi lebih tinggi atau lebih rendah.

Hans Ke st ing
sumber