2012-03-31 6 views
3

HTML <form>タグはGETとPOSTの2つのメソッドしか提供しないのはなぜですか? HTTP仕様には、PUT、DELETEなどの他の動詞もあります。HTMLフォームタグが2つの方法しか提供しないのはなぜですか?

+0

おそらく、HTML仕様書を書いた人 –

+1

実際には他の方法のサポートがHTML5で正式に削除されたことを尋ねる必要があります:http://www.w3.org/TR/2010/WD-html5-diff-20101019 /#changes-2010-06-24 "フォーム要素のHTTPメソッドとしてのPUTとDELETEの使用はサポートされなくなりました。" – ThiefMaster

+0

@ThiefMaster - サポートは、HTML5ドラフトの以前のバージョンでのみ追加されました。それは決して標準的ではありません。 – Quentin

答えて

1

他の方法では、HTMLフォームが提供するように構成されたデータを組み込むことはできません。

たとえば、DELETEは、アクション属性が指し示すリソースを削除すると予想されます。そのような要求にフォームデータを含めることは全く無意味です。

+0

ボタンが付いた空のフォームタグがある可能性がありますリソースを削除するには.... –

+1

PUTの仕様では、リソースの作成と更新ができます。それで、なぜそれがサポートされていないのですか? –

+0

フォームは、ユーザーからの入力を収集するように設計されています。 「フォームが指し示すURIを削除したい」というのは、入力の多くを集めない(多くの人々が望むものではない)。 PUTはアップロードされたものをURIとして作成または上書きします。私はx-form-urlencodedドキュメントをダウンロードできるようにアップロードするための単一のユースケースを考えることはできません。 – Quentin

0

ポストやGETを超えて人気のあるブラウザはこれまでに実装されていなかったので、

これまでのところ、フォームのDELETE、PUT、PATCHなどがどのように機能するかをブラウザメーカーに標準化させるのはあまりにも面倒です。ブラウザメーカーとの合意が得られたとしても、機能が十分に機能するためには十分なユーザーが新しいブラウザにアップグレードするまでには、少なくとも10年はかかるでしょう。

アプリケーションごとにこれを回避する方法があることに注意してください。 Ruby on Railsはform_tag helper:methodオプションを提供しています。特別なパラメータを指定したPOSTを使用するだけで、より多くのメソッドを送信することができます。

+0

しかし、そうすることができるjavascriptがあります.... –

+0

JavaScript(またはむしろXMLHttpRequestオブジェクト)では、カスタム作成のHTTPリクエストを送信できます。それらは、動的に選択されたURI、任意の要求ヘッダー、および好みのメッセージ本文を持つことができます。それとフォームデータのコレクションを提出することの間には違いがあります。 – Quentin

+0

右です.Javascriptを使用してDOMを解析してフォームの内容を把握し、AJAX経由で送信する標準化された方法はありません。通常は、POSTがやったのと同じことをするだけの大会に従わなければなりません。 – nertzy

1

HTMLは常にフォームのメソッドとしてGETとPOSTのみを許可していました。 PUTDELETEの両方がだけではなく、要求を処理するリソースを参照するURIで識別されるリソースに影響を与えることを意味しているので、その理由は、おそらくです:

POSTとPUT要求の間の根本的な違いがある Request-URIの異なる意味に反映されます。 POST要求内のURIは、同封の エンティティを処理するリソースを識別します。そのリソースは、データ受け入れプロセス、 他のプロトコルへのゲートウェイ、または注釈を受け入れる別のエンティティである可能性があります。 対照的に、PUT要求のURIは、 で囲まれたエンティティを要求で識別します。ユーザエージェントは、どのURIが意図されているかを知っており、サーバは要求を他のリソースに適用してはいけません。

[...]

オリジンサーバがRequest-URIによって識別されるリソース を削除DELETEメソッド要求。この方法は、オリジンサーバ上の人間の介入(または他の手段)によって無効にすることができる(MAY)。

これはまた、Webサーバー自身も要求を適切に処理し、認証や承認などの他の側面も処理する必要があります。

関連する問題