PUTとDELETEリクエストを「偽造」することを決めた多くのフレームワークが最近見られました。 Ruby on Railsのように。彼らはブラウザが追いつくのを待っているようだ。彼らは無駄に待っていますか?ブラウザでPUTとDELETEリクエストがサポートされないのはなぜですか?
これはどこにでも実装される予定ですか?
PUTとDELETEリクエストを「偽造」することを決めた多くのフレームワークが最近見られました。 Ruby on Railsのように。彼らはブラウザが追いつくのを待っているようだ。彼らは無駄に待っていますか?ブラウザでPUTとDELETEリクエストがサポートされないのはなぜですか?
これはどこにでも実装される予定ですか?
ブラウザはサポートPUT
とDELETE
を行うが、それはしていませんHTMLです。
たとえば、ブラウザではJavaScript(AJAX)経由でPUT
リクエストが送信されますが、HTML <form>
送信からは送信されません。
これは、HTML 4.01と最終的なW3C HTML 5.0仕様の両方で、form
要素が許可すべき唯一のHTTPメソッドがGETとPOSTであるためです。
HTML5の開発中にこれについて多くの議論があり、ある時点でHTML5に追加され、再び削除されるだけです。追加のメソッドがHTML 5仕様から削除されたのは、HTML 4レベルのブラウザーがHTMLをサポートしないためです(作成時にHTMLの一部ではないため)。 JavaScriptシムなしでそうすることを許可する方法はありません。したがって、AJAXを使用することもできます。 method="PUT"
またはmethod="DELETE"
でフォームを使用しようとして
Webページは現在のすべてのブラウザのために戻って、デフォルトの方法、GET
に下落するだろう。これにより、Webアプリケーションが意図したアクションのHTMLフォームに適切なメソッドを使用しようとする試みが中断され、結果として悪い結果が返されます。GET
が削除されます! (ハロークローラ。ああ、おっと!私のデータベースがそこに行く)POST
にHTML <form>
要素のデフォルトの方法を変更する
は(Moasicは* 1993年にフォームをデビューして以来、IMOデフォルトは常にPOST
されている必要があります)役立つだろうが、デフォルトを変更するには、インストールされたベースに浸透するのに少なくとも10年かかります。だから2つの言葉で: '遺産のために'。 。:-(
は、現在のブラウザをサポートするために、著者はそのHTMLで<input type=hidden name=_method value=DELETE>
を含むことによって、私は著者が広くa知られている使用をお勧めしますオーバーライドでそれ偽物にb_method
引数を持つことになります。(POST
にフォームメソッドを切り替えます要求が安全でないため)、次にサーバ側に_method
の認識を追加します。要求を変更して実際のDELETE要求であるかのように転送する必要があります。
webブラウザが究極のHATEOASクライアントである場合は、ne w状態をDELETE要求のために転送します。既存のAPIはそのような要求に対してしばしば204 No Content
を返します。代わりに、ユーザーがブラウザの状態を進めることができるように、リンク付きのハイパーメディア応答を返送する必要があります。
またこれらに類似/同一の質問に対する回答を参照してください。マーク・Aにより作成された
<img src=…>
タグの複合ミスを紹介しました。これは
<image source=…>fallback</image>
であったはずです。
'PUT'と' DELETE'セマンティクスが必要なブラウザレベルのアクションはどれですか? HTTPの 'PUT'アクションと' DELETE'アクションはプログラム的に生成できます。ただ、ブラウザでファイルをどのようにユーザに公開するのか想像できません。 – Gian
これらはHTML5とAjaxリクエストでサポートされています。 – n1xx1
@ N1xx1だからhtml5で私は