Що таке метод HTTP форми за замовчуванням?


147

Коли форма HTML подається, не вказуючи метод, для чого використовується метод HTTP за замовчуванням? Отримати або відправити?

Чи змінювалась така поведінка між стандартами HTML?

Будь ласка, цитуйте стандартний документ W3C, якщо це можливо.


1
Тут вже відповіли блискуче (зі специфікацією W3C та всіма): stackoverflow.com/questions/2225735/…
Pekka

Відповіді:


171

ЗАРАЗ

Погляньте на заміщення рекомендації W3C 17.3 Елемент FORM .

Витяг:

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

Добре читати

Методи GET та POST у формах 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 "get" набір даних форми додається до URI, визначеного атрибутом дії (з позначкою питання ("?") як роздільник), і цей новий URI відправляється агенту обробки.

  • post: За допомогою HTTP-методу "post" набір даних форми включається в тіло форми та надсилається агенту обробки.

Метод "get" слід використовувати, коли форма є ідентичною (тобто не викликає побічних ефектів). Багато пошукових запитів у базі даних не мають видимих ​​побічних ефектів і створюють ідеальні програми для методу "отримати".



0

(повніша відповідь, також про дію та суть)

За замовчуванням "метод", "дія" та "ентетип" форми HTML, якщо вони не вказані,
є GET, поточна URL та application/x-www-form-urlencodedвідповідно.
(Тобто, за замовчуванням форма запитує поточну сторінку з введеними параметрами.)

Така поведінка ніколи не змінювалася, крім "дії" (в HTML 4 це було потрібно). Цитати:

метод: " Відсутнє значення за замовчуванням для атрибута методу - це ... стан GET."
дія:

Дія елемента - це значення атрибута формації елемента, якщо елемент є кнопкою Submit і має такий атрибут, або значення атрибута дії власника форми, якщо він має такий, або ще порожній рядок. <...> Якщо дія - це порожній рядок, нехай дія буде URL-адресою документа форми форми.

enctype: " Відсутнє значення за замовчуванням для атрибута enctype - це ... application/x-www-form-urlencodedстан."

метод: "Можливі (нечутливі до регістру) значення" get "(за замовчуванням) та" post "."
дія: за замовчуванням немає, DTD вимагає його
enctype: "За замовчуванням для цього атрибута є" 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 : "За замовчуванням застосовується 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"

метод: відсутнє явне речення, лише в
дії 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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.