1. ホーム
  2. http

[解決済み] PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?

2022-03-15 11:57:25

質問

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

<ブロッククオート

残念ながら、同じブラウザでHTTP PUT、DELETE、そしてある程度はHTTP POSTをテストすることはできないのです。

また、GETとPOSTしかサポートしていないブラウザもあると、他の情報源から聞いたことがあります。

しかし、Firefox で少しテストしてみると PUTDELETE リクエストは期待通りに動作します。 XMLHttpRequest は正常に完了し、リクエストは正しいメソッドでサーバーログに表示されます。クロスブラウザの互換性や明らかでない制限など、私が見逃している側面があるのでしょうか?

解決方法は?

いいえ。 HTML5仕様 が言及する。

method および formmethod コンテンツ属性は、列挙型属性です。 を、以下のキーワードと状態で指定します。

キーワード 得る は、GET 状態にマッピングされ、HTTP GET メソッドを使用します。GETメソッドはデータの要求と取得のみを行うべきで は他の影響を及ぼしてはならない。

キーワード ポスト という状態にマッピングされます。 HTTP POST メソッドを示す POST。POST メソッドは、以下のことを要求します。 サーバーは、送信されたフォームのデータを受け入れ、処理します。 その結果、データベースに項目が追加されたり、新しいWeb ページリソースの更新、既存ページの更新、またはこれらすべて。 となります。

キーワード ダイアログ は、ダイアログの状態にマッピングされ、次のことを示します。 フォームを送信すると、そのフォームが含まれるダイアログボックスを閉じることを意図しています。 フォームがあればそれ自身を見つけ、そうでなければ送信しない。

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

つまり、HTML フォームがサポートするのは GET POST をHTTPリクエストメソッドとして使用します。これを回避するには、隠しフォームフィールドを使用して POST で他のメソッドを通過させ、それをサーバーが読み取り、それに応じてリクエストを送信するようにします。

しかし GET , POST , プット DELETE は、すべての主要なウェブブラウザ (IE, Firefox, Safari, Chrome, Opera) の XMLHttpRequest の実装 (すなわち AJAX コール) でサポートされています。