HTTP POST สามารถทำได้อย่างไร้ขีด จำกัด หรือไม่?


97

ฉันได้ยินมาว่า HTTP POST ไม่มีขีด จำกัด ข้อมูลจำเพาะเกี่ยวกับขนาดข้อมูลที่สามารถส่งได้ นั่นเป็นความจริงหรือมีขีด จำกัด ที่สูงจริงๆ?


คำตอบ:


75

แก้ไข (2019)คำตอบนี้ค่อนข้างซ้ำซ้อน แต่มีคำตอบอื่นที่มีข้อมูลที่เกี่ยวข้องมากกว่านี้

ค่อนข้างขึ้นอยู่กับเว็บเซิร์ฟเวอร์และเว็บเบราว์เซอร์:

Internet explorer ทุกเวอร์ชัน 2GB-1
Mozilla Firefox ทุกเวอร์ชัน 2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1

แม้ว่า IIS จะรองรับเพียง 200KB ตามค่าเริ่มต้น แต่ metabase จำเป็นต้องแก้ไขเพื่อเพิ่มสิ่งนี้

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

วิธีการ POST เองไม่มีข้อ จำกัด เกี่ยวกับขนาดของข้อมูล


upvote สำหรับการกล่าวถึง Metabase.XML และฉันได้ระบุวิธีต่างๆในการเปลี่ยนขีด จำกัด ขนาดการอัปโหลดไฟล์เนื่องจากอาจมีประโยชน์
Durai Amuthan.H

การป้อนคำสั่งต่อไปนี้ในพรอมต์คำสั่งจะช่วยเพิ่มขีด จำกัด ขนาดการอัปโหลดไฟล์ "cscript C: \ inetpub \ adminscripts \ adsutil.vbs ตั้งค่า w3svc / ASPMaxRequestEntityAllowed 10484880" (เป็นไบต์) การอ้างอิง: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H

หรือค้นหา metabase.xml ใน C: \ windows \ sytem32 \ inetserv \ path และแก้ไข แต่ตรวจสอบให้แน่ใจว่าเปิดใช้งานการแก้ไข metabase โดยตรงการอ้างอิง
Durai Amuthan ฮ

หรือใน web.config ของคุณให้เพิ่มบรรทัดใต้ system.web ของคุณ <httpRuntime ExecutionTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H

สำหรับเว็บเซิร์ฟเวอร์ปัจจุบัน (2019) ดูคำตอบนี้
Dan Dascalescu

76

น่าทึ่งมากที่คำตอบทั้งหมดพูดถึง IIS ราวกับว่านั่นเป็นเว็บเซิร์ฟเวอร์เดียวที่มีความสำคัญ เมื่อย้อนกลับไปในปี 2010 เมื่อคำถามที่ถูกถามอาปาเช่ได้ระหว่าง60%และ70% ของส่วนแบ่งการตลาด อย่างไรก็ตาม,

  • โปรโตคอล HTTP ไม่ได้ระบุขีด จำกัด
  • วิธีการ POST ช่วยให้ส่งข้อมูลได้ไกลกว่าวิธี GET ซึ่งถูก จำกัด ด้วยความยาว URL - ประมาณ 2KB
  • ขนาดเนื้อหาของคำขอ POSTสูงสุดถูกกำหนดค่าบนเซิร์ฟเวอร์ HTTP และโดยทั่วไปอยู่ในช่วง
    1MB ถึง 2GB
  • ไคลเอ็นต์ HTTP (เบราว์เซอร์หรือตัวแทนผู้ใช้อื่น) สามารถมีข้อ จำกัด ของตัวเอง ดังนั้นสูงสุด POST min(serverMaximumSize, clientMaximumSize)ขนาดคำขอร่างกายเป็น

นี่คือขนาดตัว POST สำหรับเซิร์ฟเวอร์ HTTP ที่เป็นที่นิยมมากขึ้น:


4
จากคำตอบเหล่านั้นที่กล่าวถึงเว็บเซิร์ฟเวอร์สองรายการกล่าวถึง IIS และอีกหนึ่งกล่าวถึง Apache อย่างไรก็ตามได้แก้ไขคำตอบของฉันสำหรับป้ายบอกทางไปยังคุณซึ่งสมบูรณ์และทันสมัยกว่า
David Neale

3
ขอบคุณ @DavidNeale! ควรมีป้ายกำกับ :) ฉันจะพยายามอัปเดตคำตอบนี้ให้เสมอ เพิ่งเพิ่มค่าสูงสุดสำหรับ nginx
Dan Dascalescu

เกี่ยวกับเรื่องนี้: "มีข้อมูลมากกว่าเมธอด GET ซึ่งถูก จำกัด ด้วยความยาว URL - ประมาณ 2KB" แล้วส่วนหัวล่ะ? ต่อโพสต์นี้ปรากฏว่าส่วนหัวอนุญาตให้ใช้งานได้ประมาณ 8-16KB
Hans Vonn

27

ไม่มีขีด จำกัด ตามโปรโตคอล HTTP แต่การนำไปใช้งานจะมีขีด จำกัด สูงสุดในทางปฏิบัติ ฉันส่งข้อมูลเกิน 4 GB โดยใช้ POST ไปยัง Apache แต่เซิร์ฟเวอร์บางเครื่องมีขีด จำกัด 4 GB ในเวลานั้น


4GB ยังคงสูงสุดสำหรับ Apache หรือไม่? ฉันพบว่าเอกสารเป็น 2GB
Dan Dascalescu

@DanDascalescu: ไม่รู้ไม่ได้ทำมานานแล้ว บางทีพวกเขาอาจเริ่มกำหนดขีด จำกัด สูงสุดของLimitRequestBodyคำสั่ง
Greg Hewgill

6

POST อนุญาตให้ส่งข้อมูลไปยังเซิร์ฟเวอร์ได้ตามความยาว แต่มีข้อ จำกัด ตามระยะหมดเวลา / แบนด์วิดท์เป็นต้น

ฉันคิดว่าโดยพื้นฐานแล้วมันปลอดภัยกว่าที่จะคิดว่าการส่งข้อมูลจำนวนมากไม่ถูกต้อง


2
มีกฎง่ายๆสำหรับการหมดเวลาที่เป็นอันตรายหรือไม่?
vextorspace

3

เว็บเซิร์ฟเวอร์ 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 KB บน IIS 5.0 แต่ละชื่อ / ค่า จำกัด ไว้ที่ 1024 อักขระตามที่กำหนดโดยข้อมูลจำเพาะ SGML แน่นอนว่าสิ่งนี้ใช้ไม่ได้กับไฟล์ที่อัพโหลดโดยใช้ enctype = 'multipart / form-data' ... ฉันไม่มีปัญหาในการอัพโหลดไฟล์ในช่วง 90-100 MB โดยใช้ IIS 5.0 นอกจากจะต้องเพิ่มค่า server.scriptTimeout เช่นเดียวกับความอดทนของฉัน!


1
Good edit @Matt - แสดงความสำคัญของการตัด
ทอน

1

ในแอปพลิเคชันที่ฉันกำลังพัฒนาฉันพบสิ่งที่ดูเหมือนจะเป็นขีด จำกัด POST ที่ประมาณ 2KB กลายเป็นว่าฉันตั้งใจเข้ารหัสพารามิเตอร์ลงใน URL แทนที่จะส่งผ่านไปในเนื้อความ ดังนั้นหากคุณประสบปัญหาที่นั่นแน่นอนว่ามีข้อ จำกัด เล็กน้อยเกี่ยวกับขนาดของข้อมูล POST ที่คุณสามารถส่งที่เข้ารหัสไปยัง URL ได้


0

HTTP อาจไม่มีขีด จำกัด สูงสุด แต่เว็บเซิร์ฟเวอร์อาจมีได้ ใน ASP.NET มีขีด จำกัด การยอมรับเริ่มต้นที่ 4 MB แต่คุณ (ผู้พัฒนา / ผู้ดูแลเว็บ) สามารถเปลี่ยนให้สูงขึ้นหรือต่ำลงได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.