HTML <form>
タグはGETとPOSTの2つのメソッドしか提供しないのはなぜですか? HTTP仕様には、PUT、DELETEなどの他の動詞もあります。HTMLフォームタグが2つの方法しか提供しないのはなぜですか?
答えて
他の方法では、HTMLフォームが提供するように構成されたデータを組み込むことはできません。
たとえば、DELETEは、アクション属性が指し示すリソースを削除すると予想されます。そのような要求にフォームデータを含めることは全く無意味です。
ボタンが付いた空のフォームタグがある可能性がありますリソースを削除するには.... –
PUTの仕様では、リソースの作成と更新ができます。それで、なぜそれがサポートされていないのですか? –
フォームは、ユーザーからの入力を収集するように設計されています。 「フォームが指し示すURIを削除したい」というのは、入力の多くを集めない(多くの人々が望むものではない)。 PUTはアップロードされたものをURIとして作成または上書きします。私はx-form-urlencodedドキュメントをダウンロードできるようにアップロードするための単一のユースケースを考えることはできません。 – Quentin
ポストやGETを超えて人気のあるブラウザはこれまでに実装されていなかったので、
これまでのところ、フォームのDELETE、PUT、PATCHなどがどのように機能するかをブラウザメーカーに標準化させるのはあまりにも面倒です。ブラウザメーカーとの合意が得られたとしても、機能が十分に機能するためには十分なユーザーが新しいブラウザにアップグレードするまでには、少なくとも10年はかかるでしょう。
アプリケーションごとにこれを回避する方法があることに注意してください。 Ruby on Railsはform_tag
helperに:method
オプションを提供しています。特別なパラメータを指定したPOSTを使用するだけで、より多くのメソッドを送信することができます。
しかし、そうすることができるjavascriptがあります.... –
JavaScript(またはむしろXMLHttpRequestオブジェクト)では、カスタム作成のHTTPリクエストを送信できます。それらは、動的に選択されたURI、任意の要求ヘッダー、および好みのメッセージ本文を持つことができます。それとフォームデータのコレクションを提出することの間には違いがあります。 – Quentin
右です.Javascriptを使用してDOMを解析してフォームの内容を把握し、AJAX経由で送信する標準化された方法はありません。通常は、POSTがやったのと同じことをするだけの大会に従わなければなりません。 – nertzy
HTMLは常にフォームのメソッドとしてGETとPOSTのみを許可していました。 PUTとDELETEの両方がだけではなく、要求を処理するリソースを参照するURIで識別されるリソースに影響を与えることを意味しているので、その理由は、おそらくです:
POSTとPUT要求の間の根本的な違いがある Request-URIの異なる意味に反映されます。 POST要求内のURIは、同封の エンティティを処理するリソースを識別します。そのリソースは、データ受け入れプロセス、 他のプロトコルへのゲートウェイ、または注釈を受け入れる別のエンティティである可能性があります。 対照的に、PUT要求のURIは、 で囲まれたエンティティを要求で識別します。ユーザエージェントは、どのURIが意図されているかを知っており、サーバは要求を他のリソースに適用してはいけません。
[...]
オリジンサーバがRequest-URIによって識別されるリソース を削除DELETEメソッド要求。この方法は、オリジンサーバ上の人間の介入(または他の手段)によって無効にすることができる(MAY)。
これはまた、Webサーバー自身も要求を適切に処理し、認証や承認などの他の側面も処理する必要があります。
- 1. JPA CriteriaQueryが更新クエリを提供しないのはなぜですか?
- 2. なぜ2つのゲット関数を提供するのですか?
- 3. なぜIDSはRSAMのCライブラリ関数を提供しないのですか?
- 4. なぜ反応するネイティブはボタンコンポーネントを提供しないのですか?
- 5. ModeShapeはJackRabbitが提供しないものは何ですか?
- 6. なぜjavascriptがIPアドレスを取得する方法を提供しないのですか
- 7. XTextが提供しないANTLRの機能は何ですか?
- 8. なぜ、シングルトンインスタンスがJavaのデフォルトで提供されていないのですか?
- 9. なぜepoll_waitは1msの巨大なタイムアウトしか提供しないのですか?
- 10. なぜOracleParameterはICloneableを実装しますが、Clone()は提供しないのですか?
- 11. matplotlibが私が提供する.ttfフォントを使用しないのはなぜですか?
- 12. Javaが単純なスワップ機能を提供しないのはなぜですか?
- 13. なぜData.Time.ClockはDiffTimeとNominalDiffTimeを提供するのですか?
- 14. ラッパーがHTMLで動作しないのはなぜですか?
- 15. なぜPLINQは2つのスレッドしか使用しないのですか?
- 16. Spring:Hibernate 4のSessionFactoryUtilsクラスがgetSessionメソッドを提供しないのはなぜですか?
- 17. git-daemonが私のリポジトリにサービスを提供しないのはなぜですか?
- 18. なぜResharperは「ネストされたクラスを作成する」などのコンテキストアクションを提供しないのですか?
- 19. `std :: initializer_list`が添字演算子を提供しないのはなぜですか?
- 20. Javaが配列を逆転させる標準機能を提供しないのはなぜですか?
- 21. クロムにテキストボックスの提案を提供しないようにする方法
- 22. なぜhtmlメタリフレッシュリダイレクトがプロンプトページで機能しないのですか?
- 23. なぜFontがHtml CSSで動作しないのですか?
- 24. JavaScriptのgetElementsByClassNameが配列ではないオブジェクトを提供するのはなぜですか?
- 25. Qtがサブクラス化するクラスを提供するのはなぜですか?
- 26. なぜSeleniumがNoSuchElementExceptionに関する情報を提供しないのですか
- 27. あなたのサイトにサードパーティのHTMLを提供する最良の方法は?
- 28. メジャーDBベンダーはなぜ真に非同期APIを提供していないのですか?
- 29. 提出ボタンの位置が正しくないのはなぜですか?
- 30. なぜHaskellは1次元配列の折り畳みを提供しないのですか?
おそらく、HTML仕様書を書いた人 –
実際には他の方法のサポートがHTML5で正式に削除されたことを尋ねる必要があります:http://www.w3.org/TR/2010/WD-html5-diff-20101019 /#changes-2010-06-24 "フォーム要素のHTTPメソッドとしてのPUTとDELETEの使用はサポートされなくなりました。" – ThiefMaster
@ThiefMaster - サポートは、HTML5ドラフトの以前のバージョンでのみ追加されました。それは決して標準的ではありません。 – Quentin