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

StackOverflow https://stackoverflow.com/questions/165779

質問

ここで次のような質問がいくつかありました RESTful サービスをデバッグする方法, 、次のように言及しています。

残念ながら、その同じブラウザでは HTTP PUT、DELETE、さらには HTTP POST さえもある程度テストできません。

また、次のような他の情報源から、ブラウザは GET と POST のみをサポートしていると聞きました。

ただし、Firefox でいくつかの簡単なテストを行ったところ、 PUT そして DELETE リクエストは期待どおりに機能します -- XMLHttpRequest は正常に完了し、リクエストは正しい方法でサーバー ログに表示されます。ブラウザ間の互換性や明らかではない制限など、これに関して私が見逃している側面はありますか?

役に立ちましたか?

解決

いいえ。 HTML 5仕様の言及:

  

methodおよびformmethodコンテンツ属性は列挙属性です   次のキーワードと状態で:

     

キーワード get 、状態GETへのマッピング、HTTP GETを示す   方法。 GETメソッドは、データのリクエストと取得のみを行い、   他の効果はないはずです。

     

キーワード post 、州へのマッピング   POST。HTTPPOSTメソッドを示します。 POSTメソッドはそれを要求します   サーバーは、送信されるフォームのデータを処理します。   データベースにアイテムが追加され、新しいWebが作成される   ページリソース、既存のページの更新、またはすべての   言及された結果。

     

キーワード dialog 、状態ダイアログへのマッピング、   フォームの送信は、ダイアログボックスを閉じることを目的としています。   フォームがある場合はそれ自体を見つけ、そうでなければ送信しません。

     

これらの属性の無効な値のデフォルトはGET状態です

つまりHTMLフォームは、HTTP要求メソッドとして GET および POST のみをサポートします。これを回避するには、サーバーによって読み取られる非表示フォームフィールドと、それに応じて送信される要求を使用して、POSTを介して他のメソッドをトンネリングします。

ただし、 GET POST PUT 、および DELETE でサポートされていますすべての主要なWebブラウザー(IE、Firefox、Safari、Chrome、Opera)でのXMLHttpRequest(AJAX呼び出し)の実装。

他のヒント

HTMLフォームはGETおよびPOSTをサポートしています。 (HTML5は一時的にPUT / DELETEを追加しましたが、それらは削除されました。)

XMLHttpRequestはCHICKENを含むすべてのメソッドをサポートしますが、一部のメソッド名は大文字と小文字を区別せずに一致します(メソッドはHTTPごとに大文字と小文字を区別します)。 >

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

XMLHttpRequestは、JavaScriptオブジェクトモデルの標準オブジェクトです。

Wikipediaによると、 open() は、Internet Explorer 5で最初にActiveXオブジェクト。ただし、その後標準になり、1.0、Apple Safari 1.2、Opera 7.60-p1、およびIE 7.0以降、MozillaファミリのJavaScriptで使用するために含まれています。

オブジェクトのGETメソッドは、HTTPメソッドを引数として受け取り、有効なHTTPメソッド(リンクの項目番号5を参照)として指定されます(POSTHEAD、<=を含む) >、PUTおよびDELETE RFC 2616で指定

補足として IE 7 <! >#8211; 8は、次のHTTPメソッドのみを許可します:<!> quot; GET <!> quot;、<!> quot; POST <!> quot;、<!> quot; HEAD <!> quot;、<! > quot; PUT <!> quot ;, <!> quot; DELETE <!> quot ;, <!> quot; MOVE <!> quot ;, <!> quot; PROPFIND <!> quot ;, <!> quot ; PROPPATCH <!> quot ;, <!> quot; MKCOL <!> quot ;, <!> quot; COPY <!> quot ;, <!> quot; LOCK <!> quot ;, <!> quot; UNLOCK <!> quot;および<!> quot; OPTIONS <!> quot;

これらのコメントは、ブラウザ、つまりリンクをクリックしてフォームを送信するものであり、XMLHttpRequestではないことを信じています。 PUTは、ブラウザをランタイムとして使用するJavaScriptであなたが作成したカスタムクライアントです。

更新:明確にするために、 you DELETEを書いたという意味ではありません(書きましたが)。 <=>を使用するコードを書いたことを意味します。ブラウザは<=>をネイティブでサポートしていません。 <=>は、ブラウザによってホストされるJavaScriptランタイムから取得されますが、ブラウザでホストされる必要はありません(

YES 、PUT、DELETE、HEADなどのHTTPメソッドは、最新のすべてのブラウザーで使用できます。

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

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

Opera MiniのみがサポートATMを欠いています(juli '15)が、Opera Miniはすべてをサポートしていません。 :)

追加するだけ-Safari 2以前では、PUTおよびDELETEをサポートしていませんでした。私は3の印象を受けましたが、もうテストするためにそれを持ち合わせていません。 Safari 4は間違いなくPUTとDELETEをサポートします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top