送信 - update http method




ほとんどのWebブラウザでPUT、DELETE、HEADなどのメソッドを利用できますか? (5)

私はRESTfulなサービスをデバッグする方法のようにここにいくつかの質問を見ました。

残念ながら、同じブラウザでは、HTTP PUT、DELETE、およびある程度HTTP POSTをテストすることはできません。

私はまた、ブラウザがGETとPOSTだけをサポートしていると聞いています。

しかし、Firefoxのいくつかの簡単なテストでは、 PUTDELETEリクエストを期待通りに送信することが示されていますXMLHttpRequestは正常に完了し、要求は正しい方法でサーバーログに表示されます。 ブラウザ間の互換性や明白でない制限など、私が見逃している側面がありますか?


HTMLフォームはGETとPOSTをサポートします。 (ある時点でHTML5がPUT / DELETEを追加しましたが、削除されました)

XMLHttpRequestは、CHICKENを含むすべてのメソッドをサポートしていますが、一部のメソッド名は大文字と小文字を区別せずに一致します(メソッドはHTTPごとに大文字と小文字が区別されます)。また、セキュリティ上の理由(例:CONNECT)

ブラウザはXMLHttpRequestで指定されたルールにゆっくり収束していますが、他のコメントから指摘されているように、まだいくつかの違いがあります。


HTMLフォーム(HTMLバージョン4およびXHTML 1まで)は、 GETおよびPOSTをHTTP要求メソッドとしてのみサポートしています。 これを回避するには、サーバーが読み取った隠しフォームフィールドとそれに応じて送信された要求を使用してPOSTを介して他のメソッドをトンネリングする方法があります。

しかし、 GETPOSTPUTDELETE すべての主要なWebブラウザ(IE、Firefox、Safari、Chrome、Opera)のXMLHttpRequest(AJAX呼び出し)の実装でサポートされています。


_method隠しフィールドの回避策

Railsで使用され、任意のフレームワークに適用できます。

  • 隠された_methodパラメータをGETまたはPOST以外の形式に追加します。

    <input type="hidden" name="_method" value="DELETE">
    

    これは、HTML作成ヘルパーメソッド(例えば、Rails form_tag )を介してフレームワーク内で自動的に行うことができます。

  • 実際のフォームメソッドをPOSTに修正する( <form method="post"

  • サーバ上で_methodを処理し、実際のP​​OSTの代わりにそのメソッドが送られたかのようにします

なぜそれが不可能であるかの理論的根拠/履歴: https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms : https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms


YES 、PUT、DELETE、HEADなどHTTPメソッドは現代のすべてのブラウザで利用できます。

レベル2のXMLHttpRequestに準拠するには、これらのメソッドをサポートする必要があります。 どのブラウザがXMLHttpRequestレベル2をサポートしているかを確認するにはCanIUseをお勧めします:

http://caniuse.com/#feat=xhr2

Opera Miniだけがatm(juli '15)をサポートしていませんが、Opera Miniはすべてをサポートしていません。 :)


追加するだけで、Safari 2以前は間違いなくPUTとDELETEをサポートしていませんでした。 私は印象が3になったが、私はそれ以上テストすることはありません。 Safari 4はPUTとDELETEをサポートしています。





ajax