วิธีการแบบฟอร์ม HTTP เริ่มต้นคืออะไร?


147

เมื่อมีการส่งแบบฟอร์ม HTML โดยไม่ระบุวิธีการวิธีการ HTTP เริ่มต้นที่ใช้คืออะไร? รับหรือโพสต์?

พฤติกรรมนี้เปลี่ยนไประหว่างมาตรฐาน HTML หรือไม่

โปรดอ้างอิงเอกสารมาตรฐานของ W3C หากเป็นไปได้


1
ได้รับคำตอบอย่างยอดเยี่ยมที่นี่ (พร้อมข้อมูลจำเพาะ W3C และทั้งหมด): stackoverflow.com/questions/2225735/…
Pekka

คำตอบ:


171

รับเลย

ลองดู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 --
  >

อ่านดี

วิธีการรับและโพสต์ในรูปแบบ HTML - ความแตกต่างคืออะไร?



9

หากไม่ได้ระบุไว้ค่าเริ่มต้นคือ 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 (เช่นไม่มีผลข้างเคียง) การค้นหาฐานข้อมูลจำนวนมากไม่มีผลข้างเคียงที่มองเห็นได้และสร้างแอพพลิเคชั่นที่เหมาะสมที่สุดสำหรับวิธี "รับ"



0

(คำตอบแบบเต็มยังเกี่ยวกับการกระทำและประเภท)

ค่าเริ่มต้น 'method', 'action' และ 'enctype' ของแบบฟอร์ม HTMLหากไม่ได้ระบุไว้
จะเป็น GET, URL ปัจจุบันและapplication/x-www-form-urlencodedตามลำดับ
(โดยปกติแล้วฟอร์มจะร้องขอหน้าปัจจุบันพร้อมพารามิเตอร์ที่ป้อนเข้า)

พฤติกรรมนี้ไม่เคยเปลี่ยนแปลงยกเว้น 'การกระทำ' (จำเป็นต้องใช้ HTML 4) อ้างอิง:

  • 5 และต่อมาW3C TR

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