เมื่อมีการส่งแบบฟอร์ม HTML โดยไม่ระบุวิธีการวิธีการ HTTP เริ่มต้นที่ใช้คืออะไร? รับหรือโพสต์?
พฤติกรรมนี้เปลี่ยนไประหว่างมาตรฐาน HTML หรือไม่
โปรดอ้างอิงเอกสารมาตรฐานของ W3C หากเป็นไปได้
เมื่อมีการส่งแบบฟอร์ม HTML โดยไม่ระบุวิธีการวิธีการ HTTP เริ่มต้นที่ใช้คืออะไร? รับหรือโพสต์?
พฤติกรรมนี้เปลี่ยนไประหว่างมาตรฐาน HTML หรือไม่
โปรดอ้างอิงเอกสารมาตรฐานของ W3C หากเป็นไปได้
คำตอบ:
รับเลย
ลองดูW3C แทนที่คำแนะนำ 17.3 องค์ประกอบแบบฟอร์ม
ข้อความที่ตัดตอนมา:
<!ATTLIST FORM
%attrs; -- %coreattrs, %i18n, %events --
action %URI; #REQUIRED -- server-side form handler --
method (GET|POST) GET -- HTTP method used to submit the form--
enctype %ContentType; "application/x-www-form-urlencoded"
accept %ContentTypes; #IMPLIED -- list of MIME types for file upload --
name CDATA #IMPLIED -- name of form for scripting --
onsubmit %Script; #IMPLIED -- the form was submitted --
onreset %Script; #IMPLIED -- the form was reset --
accept-charset %Charsets; #IMPLIED -- list of supported charsets --
>
อ่านดี
นี่คือการอ้างอิง W3C ซึ่งระบุว่า GET เป็นค่าเริ่มต้น
หากไม่ได้ระบุไว้ค่าเริ่มต้นคือ GET ฉันไม่เห็นสิ่งบ่งชี้ว่าพฤติกรรมนี้แตกต่างกัน และมันสมเหตุสมผลแล้ว GET คือค่าเริ่มต้นตามที่ระบุว่าควรใช้วิธีการสำหรับการกระทำที่ไม่มีผลข้างเคียง
http://www.faqs.org/faqs/www/cgi-faq/section-37.html
การอ้างอิงจากhttp://www.w3.org/TR/html401/interact/forms.html#h-17.3 :
method = get | post [CI]
คุณลักษณะนี้ระบุวิธีการ HTTP ที่จะใช้ในการส่งชุดข้อมูลแบบฟอร์ม ค่าที่เป็นไปได้ (ตัวพิมพ์เล็ก - ใหญ่) คือ "get
" (ค่าเริ่มต้น) และ "post
" ดูส่วนในการส่งแบบฟอร์มสำหรับข้อมูลการใช้งาน17.13.1 วิธีการส่งแบบฟอร์ม
แอตทริบิวต์วิธีการของFORM
องค์ประกอบระบุวิธี HTTP ที่ใช้ในการส่งแบบฟอร์มไปยังตัวแทนการประมวลผล คุณลักษณะนี้อาจใช้สองค่า:
get: ด้วยวิธี HTTP "รับ" ชุดข้อมูลแบบฟอร์มจะถูกผนวกเข้ากับ URI ที่ระบุโดยแอ็ตทริบิวต์การดำเนินการ (ที่มีเครื่องหมายคำถาม ("?") เป็นตัวคั่น) และ URI ใหม่นี้จะถูกส่งไปยังตัวแทนการประมวลผล
โพสต์: ด้วยวิธี HTTP "โพสต์" ชุดข้อมูลแบบฟอร์มจะรวมอยู่ในเนื้อความของแบบฟอร์มและส่งไปยังตัวแทนการประมวลผล
ควรใช้เมธอด "get" เมื่อแบบฟอร์มเป็น idempotent (เช่นไม่มีผลข้างเคียง) การค้นหาฐานข้อมูลจำนวนมากไม่มีผลข้างเคียงที่มองเห็นได้และสร้างแอพพลิเคชั่นที่เหมาะสมที่สุดสำหรับวิธี "รับ"
ตามมาตรฐาน W3C ที่คุณต้องการค่าเริ่มต้นควรเป็น GET
(คำตอบแบบเต็มยังเกี่ยวกับการกระทำและประเภท)
ค่าเริ่มต้น 'method', 'action' และ 'enctype' ของแบบฟอร์ม HTMLหากไม่ได้ระบุไว้
จะเป็น GET, URL ปัจจุบันและapplication/x-www-form-urlencoded
ตามลำดับ
(โดยปกติแล้วฟอร์มจะร้องขอหน้าปัจจุบันพร้อมพารามิเตอร์ที่ป้อนเข้า)
พฤติกรรมนี้ไม่เคยเปลี่ยนแปลงยกเว้น 'การกระทำ' (จำเป็นต้องใช้ HTML 4) อ้างอิง:
method: " ค่าที่หายไปเริ่มต้นสำหรับแอตทริบิวต์ method คือ ... สถานะ GET"
หนังบู๊:
การกระทำขององค์ประกอบคือค่าของแอตทริบิวต์ formaction ขององค์ประกอบถ้าองค์ประกอบเป็นปุ่มส่งและมีคุณลักษณะดังกล่าวหรือค่าของแอตทริบิวต์การกระทำของเจ้าของรูปแบบถ้ามันมีหนึ่งหรืออื่น ๆ สตริงที่ว่างเปล่า <... > หากการดำเนินการเป็นสตริงว่างให้ดำเนินการเป็น URL ของเอกสารของเอกสารแบบฟอร์ม
enctype: " ค่าที่หายไปเริ่มต้นสำหรับแอตทริบิวต์ enctype คือ ... application/x-www-form-urlencoded
สถานะ"
วิธีการ: "ค่าที่เป็นไปได้ (ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) คือ 'รับ' (ค่าเริ่มต้น) และ 'โพสต์'
การกระทำ: ไม่มีค่าเริ่มต้น DTD ต้องการประเภท
: "ค่าเริ่มต้นสำหรับแอตทริบิวต์นี้คือ 'application / x-www-form-urlencoded'"
<!ATTLIST FORM
%attrs; -- %coreattrs, %i18n, %events --
action %URI; #REQUIRED -- server-side form handler --
method (GET|POST) GET -- HTTP method used to submit the form--
enctype %ContentType; "application/x-www-form-urlencoded"
เมธอด: "มันอาจเป็น GET หรือ POST และเป็นค่าเริ่มต้นที่ GET"
การกระทำ: ไม่มีประโยคที่ชัดเจนเฉพาะในประเภท DTD
: "มันเป็นค่าเริ่มต้นสำหรับแอปพลิเคชัน / x-www-form-urlencoded "
<!ATTLIST FORM
action %URL #IMPLIED -- server-side form handler --
method (%HTTP-Method) GET -- see HTTP specification --
enctype %Content-Type; "application/x-www-form-urlencoded"
วิธีการ: ไม่มีประโยคที่ชัดเจนเฉพาะใน
การกระทำDTD : "การกระทำ URI ของรูปแบบเริ่มต้นไปที่ URI ฐานของเอกสาร"
enctype: "การเข้ารหัสเริ่มต้นสำหรับทุกรูปแบบคือ` application / x-www-form-urlencoded '"
<!ATTLIST FORM
ACTION CDATA #IMPLIED
METHOD (%HTTP-Method) GET
ENCTYPE %Content-Type; "application/x-www-form-urlencoded"