Apakah metode HTTP bentuk default?

147

Ketika formulir HTML dikirimkan tanpa menentukan metode, apa metode HTTP default yang digunakan? DAPATKAN atau POST?

Apakah perilaku ini pernah berubah di antara standar HTML?

Harap sebutkan dokumen standar W3C jika memungkinkan.

David
sumber
1
Sudah dijawab dengan cemerlang di sini (dengan spesifikasi W3C dan semuanya): stackoverflow.com/questions/2225735/…
Pekka

Jawaban:

171

MENDAPATKAN.

Lihatlah W3C Superceded Recommendation 17.3 Elemen FORM .

Kutipan:

<!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 --
  >

Baca bagus

Metode DAPATKAN dan POST dalam bentuk HTML - apa bedanya?

Drew Wills
sumber
15

Berikut ini adalah referensi W3C, yang mengatakan GET adalah default.

Jon Seigel
sumber
9

Jika tidak ditentukan, standarnya adalah GET. Saya tidak melihat indikasi bahwa perilaku ini pernah berbeda. Dan masuk akal bahwa GET adalah default, karena ia menetapkan bahwa metode harus digunakan untuk tindakan tanpa efek samping.

http://www.faqs.org/faqs/www/cgi-faq/section-37.html

Kutipan dari http://www.w3.org/TR/html401/interact/forms.html#h-17.3 :

method = get | post [CI]
Atribut ini menentukan metode HTTP mana yang akan digunakan untuk mengirimkan kumpulan data formulir. Nilai yang mungkin (tidak peka huruf besar kecil) adalah " get" (default) dan " post". Lihat bagian tentang pengiriman formulir untuk informasi penggunaan.

17.13.1 Metode pengiriman formulir
Atribut metode FORMelemen menentukan metode HTTP yang digunakan untuk mengirim formulir ke agen pemrosesan. Atribut ini dapat mengambil dua nilai:

  • get: Dengan metode "get" HTTP, kumpulan data formulir ditambahkan ke URI yang ditentukan oleh atribut tindakan (dengan tanda tanya ("?") sebagai pemisah) dan URI baru ini dikirim ke agen pemrosesan.

  • posting: Dengan metode "posting" HTTP, kumpulan data formulir disertakan dalam badan formulir dan dikirim ke agen pemrosesan.

Metode "get" harus digunakan ketika formulir idempoten (yaitu, tidak menyebabkan efek samping). Banyak pencarian basis data tidak memiliki efek samping yang terlihat dan membuat aplikasi yang ideal untuk metode "dapatkan".

Roger Willcocks
sumber
5

Menurut standar W3C yang Anda minta, standarnya adalah GET.

ghoppe
sumber
0

(jawaban yang lebih lengkap, juga tentang aksi dan enctype)

'Metode', 'tindakan', dan 'enctype' default dari formulir HTML, jika tidak ditentukan,
adalah GET, URL saat ini dan application/x-www-form-urlencodedmasing - masing.
(Yaitu, secara default, formulir meminta halaman saat ini dengan parameter yang dimasukkan.)

Perilaku ini tidak pernah berubah, kecuali 'tindakan' (dalam HTML 4 diperlukan). Kutipan:

metode: " Nilai default yang hilang untuk atribut metode adalah ... keadaan GET."
tindakan:

Tindakan elemen adalah nilai atribut formasi elemen, jika elemen tersebut adalah Tombol Kirim dan memiliki atribut seperti itu, atau nilai atribut tindakan pemilik formnya, jika memiliki satu, atau string kosong. <...> Jika aksi adalah string kosong, biarkan aksi menjadi URL dokumen dari dokumen formulir.

enctype: " Nilai default yang hilang untuk atribut enctype adalah ... application/x-www-form-urlencodedstate."

metode: "Nilai yang mungkin (tidak peka huruf besar kecil) adalah 'get' (default) dan 'post'."
action: tidak ada default, DTD mengharuskannya
enctype: "Nilai default untuk atribut ini adalah '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"

metode: "Ini bisa GET atau POST, dan default ke GET."
action: tidak ada kalimat eksplisit, hanya dalam DTD
enctype: "Ini default untuk application / 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"

metode: tidak ada kalimat eksplisit, hanya dalam
tindakan DTD : "URI tindakan formulir default ke URI dasar dokumen"
enctype: "Pengkodean default untuk semua formulir adalah` application / x-www-form-urlencoded '. "

<!ATTLIST FORM
        ACTION CDATA #IMPLIED
        METHOD (%HTTP-Method) GET
        ENCTYPE %Content-Type; "application/x-www-form-urlencoded"
georgeawg
sumber