* [CODE(HTMLa)@en[method]] 属性 (HTML)

[1] [[HTML]] の [CODE(HTMLe)[[[form]]]] 要素の
[DFN[[CODE(HTMLa)[method]] 属性]]は、
[[フォーム・データ集合]]を[[提出]]する際に使用する
[[HTTP]] method を指定します。

[24]
:状態:[[WHATWG]] [[WD]]
:[[要素型]]:
[CODE(HTMLe)@en[[QN[[[form]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]]
([CODE(HTML)@en[[[image]]]]、[CODE(HTML)@en[[[submit]]]])、
[CODE(HTMLe)@en[[QN[[[button]]] [http://www.w3.org/1999/xhtml]]]]
([CODE(HTML)@en[[[submit]]]])
:[[属性名]]:[CODE(HTMLa)@en[[[method]]]]
([Q@en[[[HTTP]] [[method]]]] ([Q@en[[[HTTP]] [[メソッド]]]]) より)
:[[属性値]]:[[列挙型]] (>>2)
:[[既定値]]:[CODE(HTTP)@en[[[get]]]] (>>5)

[3] 仕様書:
- [[SI 4281]]:1998
-- [CSECTION[8.1 Encoding the reply]]
<http://www.qsm.co.il/Hebrew/si4281e.htm>
- [[HTML 4]] ([[Web Forms 1.0]])
-- [CODE(HTMLe)[form]] 要素 [CODE(HTMLa)[method]] 属性
<IW:HTML4:"interact/forms.html#adef-method">
-- [CITE[17.13.1 Form submission method]]
<IW:HTML4:"interact/forms.html#idx-form-8">

[21]
HTML 4 DTD [[注釈]] (参考) には
[Q[HTTP method used to submit the form]]
と説明があります。


** 属性値

[2] この属性は[[列挙型]]です。

,属性値	,説明	,出典
,[CODE(HTML)[[[get]]]]	,HTTP [CODE(HTTP)[[[GET]]]]	,[HTML 4]
,[CODE(HTML)[[[post]]]]	,HTTP [CODE(HTTP)[[[POST]]]]	,[HTML 4]

[5] この属性は省略可能です。省略時の既定値は
[CODE(HTML)[get]] です。

[22] いつどの値を使うべきであるかは、[[提出]]の項をご覧下さい。

* 処理モデル

[6] この属性の値は、フォーム・データを[[提出]]する際の提出方法の決定に使われます。

[8]
Web Forms 1.0 では、 [CODE(HTML)[get]] と [CODE(HTML)[post]]
の2種類の値しか認めず、他の値を受け取った時の UA
の挙動は未定義としていますし、 HTTP 以外で提出する場合についても未定義です
[SRC[HTML 4 17.13.3]]。

[4] HTTP 以外の[[プロトコル]]で送信する場合はそのプロトコルに応じて適当な値を指定しておかないといけないと思われ。
また [[UA]] も必要ならこの値を無視して適当な形で送らないといけないかと。

[20] HTTP の場合、 [CODE(HTTP)[[[GET]]]] で提出する時は、
[[フォーム・データ集合]]を [CODE(ABNF)[[[Request-URI]]]]
の [CODE(ABNF)[[[query]]]] として送信します。
[CODE(HTTP)[[[POST]]]] で提出する時は、
[CODE(ABNF)[[[entity-body]]]] として送信します。
[SRC[HTML 4 17.13.1]]

フォームが[RUBYB[[[冪等]]] [idempotent]]である 
(効果が一定しない[[副作用]]がない)
ときには、 [CODE(HTTP)[GET]] を使用するべきです。
データベースの検索は理想的な例です。副作用があるときには、
[CODE(HTTP)[POST]] を使用するべきです。 [SRC[HTML 4 17.13.1]]

[7] 詳しくはフォームの[[提出]]の説明を参照してください。

[[#comment]]


** 歴史

[24]
[[Web Forms 2.0]] で [CODE(HTMLe)@en[[[input]]]]
([CODE(HTML)@en[[[image]]]]、[CODE(HTML)@en[[[submit]]]]) と
[CODE(HTMLe)@en[[[button]]]]
([CODE(HTML)@en[[[submit]]]]) に追加されました。

[25]
[CITE[Re: A thought: <a href="..." method="post">]] ([[Ian Hickson <ian@...>]] 著, [CODE[2007-10-31 00:52:57 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/12271>
([[名無しさん]])

[[#comment]]


** 実装

[19] >>2 古い UA は小文字が混ざると対応できないことがあるんだそうです。

[23]
[CITE[最速インターフェース研究会 :: ページ内のフォームのmethodを全てGETにするブックマークレット]] <http://la.ma.la/blog/diary_200608181518.htm>
([[名無しさん]] [WEAK[2006-08-18 10:29:27 +00:00]])

[[#comment]]


** 他との関係

[9] [CODE(HTMLa)[method]] 属性は HTTP [[要求]]の最初の行の
method の指定に対応します。 HTTP の方は大文字・小文字を区別''します''。
従来の HTML では区別しません。ですから、
古くから大文字で指定する場合が多かったのですが、 [[XHTML]]
では従来大文字・小文字を区別しなかった部分が小文字に統一されました。
そのため、 HTTP では大文字でなければならず、
XHTML では小文字でなければならないという、
いささか不恰好なこととなっています。

[[#comment]]


** メモ

[[#comment]]


* メモ

[36] [CITE[IRC logs: freenode / #whatwg / 20100212]]
([TIME[2010-02-14 11:17:32 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100212#l-385>

[37] [CITE@en[Web Applications 1.0 r7648     Fix broken logic around IDL attributes for form submission.]]
( ([TIME[2013-01-25 08:45:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7647&to=7648>

[38] [CITE@en[Web Applications 1.0 r7648     Fix broken logic around IDL attributes for form submission.]]
( ([TIME[2013-01-25 08:45:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7647&to=7648>

[10] [CITE[OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema]]
([TIME[2011-09-29 13:00:00 +09:00]] 版)
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#a19_291form_method>

[11] [CITE@en[Editorial: always state invalid value default]]
([[GloverDonovan]]著, [TIME[2018-03-05 13:36:29 +09:00]])
<https://github.com/whatwg/html/commit/7e941ae96b264d4743ea0afac00c3b3209ab0cde>

[12] [CITE@en[Make it clear method and formmethod take "dialog" as value]]
([[musgravejw]]著, [TIME[2018-04-20 16:44:19 +09:00]])
<https://github.com/whatwg/html/commit/bec96b111405d998fd1a37f51f73b43e9dee77b4>

[13] [CITE@en[Editorial: Allow variants in form and formmethod by musgravejw · Pull Request #3634 · whatwg/html]]
([TIME[2018-04-21 15:27:51 +09:00]])
<https://github.com/whatwg/html/pull/3634>

[14] [CITE@en[<form method> description only says "HTTP method" · Issue #3568 · whatwg/html]]
([TIME[2018-04-21 15:28:01 +09:00]])
<https://github.com/whatwg/html/issues/3568>