Jaka jest domyślna metoda HTTP formularza?


147

Gdy formularz HTML jest przesyłany bez określenia metody, jaka jest używana domyślna metoda HTTP? POBIERZ czy OPUBLIKUJ?

Czy to zachowanie kiedykolwiek zmieniło się między standardami HTML?

Jeśli to możliwe, zacytuj standardowy dokument W3C.


1
Odpowiedzi udzielono już tutaj znakomicie (ze specyfikacją W3C i wszystkim): stackoverflow.com/questions/2225735/…
Pekka

Odpowiedzi:


171

To jest GET.

Spójrz W3C Zastąpiona Rekomendacja 17.3 Element FORMULARZ .

Fragment:

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

Dobra lektura

Metody GET i POST w formularzach HTML - jaka jest różnica?



9

Jeśli nie zostanie określony, wartością domyślną jest GET. Nie widzę żadnej wskazówki, że to zachowanie było kiedykolwiek inne. I ma sens, że GET jest wartością domyślną, ponieważ określa, że ​​metoda powinna być używana do działań bez skutków ubocznych.

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

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

method = get | post [CI]
Ten atrybut określa, która metoda HTTP zostanie użyta do przesłania zestawu danych formularza. Możliwe wartości (bez rozróżniania wielkości liter) to „ get” (wartość domyślna) i „ post”. Zobacz sekcję dotyczącą przesyłania formularza, aby uzyskać informacje na temat użytkowania.

17.13.1 Metoda przesyłania formularza
Atrybut metody FORMelementu określa metodę HTTP używaną do wysłania formularza do podmiotu przetwarzającego. Ten atrybut może mieć dwie wartości:

  • get: W przypadku metody HTTP „get” zestaw danych formularza jest dołączany do identyfikatora URI określonego przez atrybut akcji (ze znakiem zapytania („?”) jako separatorem) i ten nowy identyfikator URI jest wysyłany do agenta przetwarzającego.

  • post: W przypadku metody HTTP „post” zestaw danych formularza jest umieszczany w treści formularza i wysyłany do agenta przetwarzającego.

Metoda „get” powinna być używana, gdy formularz jest idempotentny (tj. Nie powoduje skutków ubocznych). Wiele wyszukiwań w bazach danych nie ma widocznych skutków ubocznych i jest idealnym zastosowaniem metody „pobierz”.



0

(pełniejsza odpowiedź, także dotycząca akcji i kodu)

Domyślne „metoda”, „akcja” i „typ kodowania” formularza HTML, jeśli nie zostały określone,
to odpowiednio GET, bieżący adres URL i application/x-www-form-urlencoded.
(To znaczy, domyślnie formularz żąda bieżącej strony z wprowadzonymi parametrami).

To zachowanie nigdy się nie zmieniło, z wyjątkiem „akcji” (w HTML 4 było to wymagane). Cytaty:

metoda: " Brak wartości domyślnej dla atrybutu metody to ... stan GET."
akcja:

Akcją elementu jest wartość atrybutu formaction elementu, jeśli element jest przyciskiem Prześlij i ma taki atrybut, lub wartość atrybutu działania właściciela formularza, jeśli ma, lub pusty ciąg. <...> Jeśli akcja jest pustym ciągiem, niech akcja będzie adresem URL dokumentu dokumentu formularza.

enctype: " Domyślną brakującą wartością atrybutu enctype jest ... application/x-www-form-urlencodedstan."

metoda: "Możliwe wartości (bez rozróżniania wielkości liter) to 'get' (wartość domyślna) i 'post'."
action: brak wartości domyślnej, DTD wymaga
enctype: "Domyślna wartość tego atrybutu to '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"

metoda: "Może to być GET lub POST, a domyślnie GET."
akcja: brak wyraźnego zdania, tylko w
kodowaniu DTD : "Domyślnie 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"

metoda: brak wyraźnego zdania, tylko w
akcji DTD : "
Identyfikator URI akcji formularza domyślnie odpowiada bazowemu URI dokumentu" enctype: "Domyślnym kodowaniem dla wszystkich formularzy jest` application / x-www-form-urlencoded '. "

<!ATTLIST FORM
        ACTION CDATA #IMPLIED
        METHOD (%HTTP-Method) GET
        ENCTYPE %Content-Type; "application/x-www-form-urlencoded"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.