มีขนาดสูงสุดสำหรับความยาวของอินพุตที่ซ่อนอยู่ใน html หรือไม่


93

กล่าวอีกนัยหนึ่ง:

<input type="hidden" value="Can I put as much as I want in here, or is there a limit?" />

แล้วถ้าเป็นเช่นนั้นมันคืออะไร?


7
วิธีการถามที่ดีที่สุดที่ฉันเคยเห็น
Andrés Morales

คำตอบ:


60

ขึ้นอยู่กับวิธีการที่คุณส่งแบบฟอร์มด้วย

สำหรับ GET จะมีการตกลงกันโดยทั่วไปที่ จำกัด ประมาณ 1-2 กิโลไบต์ขึ้นอยู่กับข้อ จำกัด ของเบราว์เซอร์และเซิร์ฟเวอร์

ด้วย POST ไม่มีข้อ จำกัด ทางเทคนิคในเบราว์เซอร์ แต่โดยปกติจะอยู่ที่ฝั่งเซิร์ฟเวอร์ - ดูเช่น Apache's LimitRequestBody, PHP post_max_sizeและอื่น ๆ


ระวังปัญหาที่ @naugtur ชี้ให้เห็นด้านล่างสำหรับช่องป้อนข้อความอย่างน้อยก็สำหรับปัญหาที่กำหนดโดยเบราว์เซอร์ที่แตกต่างกัน
Oliver

ฉันเพิ่งทำการทดสอบกับเบราว์เซอร์ 3 ตัวในปัจจุบัน (IE9, FF 10 ESR, Chrome 24) และพวกเขาทั้งหมดส่งค่าอินพุตที่ซ่อนอยู่ 100KB โดยไม่มีปัญหาใด ๆ ดังนั้นปัญหาเกี่ยวกับการป้อนข้อความดูเหมือนจะใช้ไม่ได้ที่นี่
Oliver

แล้วtextareas ล่ะ?
Francisco Corrales Morales

@FranciscoCorralesMorales ไม่สำคัญว่าช่องป้อนข้อมูลจะเป็นประเภทใด - สิ่งที่นับเป็นผลลัพธ์สุดท้ายผลรวมของข้อมูลทั้งหมดที่คุณส่ง
Pekka

ฉันพบว่า Safari ตัดทอนอินพุตที่ซ่อนอยู่ การใช้ textarea ช่วยแก้ปัญหาได้
Brendon Muir

29

คำเตือน! ฉันประสบปัญหา<input type="text">เมื่อข้อความยาวเกิน 65535 (ขนาด int ที่ลงชื่อสูงสุด)

การวางข้อความดูเหมือนจะทำให้เนื้อหาล้นออกมาอย่างแปลกประหลาด พบใน webkit

[แก้ไข]

ขนาดของคำขอ GET ไม่ได้ จำกัด แบบที่ Pekka เขียนไว้อย่างแน่นอน มีขีด จำกัด 2083 ไบต์สำหรับสตริงการสืบค้น GET ทั้งหมดaddress?paramsในInternet Explorer เท่านั้น ในเบราว์เซอร์อื่นไม่มีขีด จำกัด ในทางปฏิบัติโดย FireFox จะส่งข้อความค้นหา GET ที่มีขนาดมากกว่า 100KB เป็นต้น เห็นได้ชัดว่าเซิร์ฟเวอร์ต้องอนุญาต

ไม่ครอบคลุมในเอกสารดังนั้นจึงต้องทดสอบเพื่อให้ทราบถึงขีด จำกัด สำหรับเบราว์เซอร์อื่น IE: http://support.microsoft.com/kb/208427


8
+1 ฉันสร้าง jsFiddle นี้ขึ้นเพื่อทดสอบว่าจะเกิดอะไรขึ้นเมื่อคุณตั้งค่าอินพุตเป็นสตริงที่ยาวมาก: jsfiddle.net/3TVPL/6ฉันใช้สตริงยาว 65537 ตัวอักษร ในการทดสอบของฉัน Crome 24.0.1312 และ Safari 5.1.7 สำหรับ Windows ทั้งคู่แสดงช่องป้อนข้อมูลว่าว่างเปล่าหลังจากตั้งค่าเป็นสตริงนั้น Chrome แสดงค่าที่ไม่ว่างเปล่าที่เหมาะสมหากฉันลดสตริงให้มีความยาว 65536 ตัวอักษร เบราว์เซอร์อื่น ๆ (Firefox 17, IE8, IE9, IE10, Opera 12.12) ไม่มีปัญหาใด ๆ แม้ว่าจะมีสตริงที่ยาวกว่ามากก็ตาม (ฉันขึ้นไปได้ไกลถึงสตริง 1.2 Mb)
beluga

@beluga เยี่ยมมาก มีความคิดเห็นเกี่ยวกับการแสดงหรือไม่ บนเครื่องที่อ่อนแอของฉันมันรอนาน ฉันเดาว่านั่นเป็นสาเหตุที่ webkit ไม่แสดงผล
บริการ

จุดที่ดีบางที ฉันไม่ได้ทำการทดสอบประสิทธิภาพใด ๆ ในขณะนี้ ฉันมีเครื่องเพิ่มความแข็งแรงในที่ทำงานและไม่ได้สังเกตเห็นความล่าช้าในเบราว์เซอร์ใด ๆ
beluga

มันทำให้ FF ของฉันใช้งานไม่ได้เป็นเวลา 5 นาที ใส่มากขนาดนี้ในด้านรูปแบบที่ไม่ได้เป็นความคิดที่ดีเลยล่ะค่ะ :)
naugtur

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