69

HTTPに関するウィキペディアのエントリには、次の HTTP 要求メソッドがリストされています。

  • HEAD: GET 要求に対応するものと同じ応答を要求しますが、応答本文はありません。
  • GET:指定されたリソースの表現を要求します。
  • POST:処理対象のデータ (HTML フォームなどから) を識別されたリソースに送信します。データはリクエストの本文に含まれます。
  • PUT:指定されたリソースの表現をアップロードします。
  • DELETE:指定したリソースを削除します。
  • TRACE:受信したリクエストをエコーバックして、クライアントが中間サーバーによって行われた変更または追加 (ある場合) を確認できるようにします。
  • オプション:指定された URL に対してサーバーがサポートする HTTP メソッドを返します。これは、特定のリソースの代わりに「*」を要求することで、Web サーバーの機能をチェックするために使用できます。
  • CONNECT:要求接続を透過的な TCP/IP トンネルに変換します。通常は、暗号化されていない HTTP プロキシを介した SSL 暗号化通信 (HTTPS) を容易にします。
  • PATCH:リソースに部分的な変更を適用するために使用されます。

私は知りたいです(特に最初の5つの方法に関して):

  • これらのメソッドのうち、ペイロードを受信できる (と思われる) ものはどれですか?
    • ペイロードを受信できるメソッドのうち、どのように受信するのですか?
      • URLのクエリ文字列を介して?
      • URLエンコードされた本文を介して?
      • 生/チャンクボディ経由?
      • 上記の ([すべて / 一部]) の組み合わせによるものですか?

いくつかの(できれば軽い)読み物を共有していただければ、すべての意見に感謝します。

4

3 に答える 3

92

これは、 @Darrelが投稿したリンクの更新版であるRFC 7231の要約です。

  • HEAD - 本体のセマンティクスが定義されていません。
  • GET - 本体のセマンティクスが定義されていません。
  • PUT - 本文がサポートされています。
  • POST - 本文対応。
  • DELETE - 本体のセマンティクスが定義されていません。
  • TRACE - 本文サポートされていません。
  • OPTIONS - ボディはサポートされていますが、使用法に関するセマンティクスはありません (おそらく将来)。
  • CONNECT - 本体のセマンティクスが定義されていません

@Johnも述べたように、すべてのリクエスト メソッドは URL のクエリ文字列をサポートします (注目すべき例外の 1 つは[私のテストで] URL が.HOST/*

ATM には興味がないので、 CONNECTメソッドとPATCHメソッドはテストしていません。

于 2011-05-08T15:10:16.720 に答える
34

RFC 7231 (HTTP 1.1 Semantics and Content) は、HTTP メソッドのセマンティクスに関する最新かつ信頼できる情報源です。この仕様では、GET、HEAD、OPTIONS、または CONNECT メッセージに含まれる可能性があるペイロードの意味は定義されていないと述べています。セクション 4.3.8 は、クライアントが TRACE 要求の本文を送信してはならないことを示しています。したがって、TRACE だけはペイロードを持つことができませんが、GET、HEAD、OPTIONS、および CONNECT はおそらくペイロードを持つことができず、サーバーは、クライアントがペイロードを送信した場合にそれを処理する方法を知っているとは期待されていません (つまり、無視できます)。

あいまいな点があると思われる場合は、懸念を表明できるメーリング リストがあります。

于 2011-05-06T02:10:31.690 に答える
3

GET リクエストにペイロードを含めることができるかどうかは明らかではありません。GET リクエストは通常​​、HEAD リクエストと同じように、クエリ文字列を介してフォーム データを送信します。HEAD は本質的に GET です - 応答本文が必要ないことを除いて。

(補足: GET リクエストは技術的に別のプロトコルにアップグレードできるため、明確ではありません。実際、あるバージョンの Websocket はこれを実行し、一部のプロキシ ソフトウェアはそれで問題なく動作しましたが、他のソフトウェアはハンドシェイクに固執しました。)

通常、POST には本体があります。クエリ文字列の使用を妨げるものは何もありませんが、通常、POST 本文には POST のフォーム データが含まれます。

より多くの (そしてより詳細な) 情報については、実際のHTTP/1.1 仕様を参照してください。

于 2011-05-06T01:31:19.467 に答える