HTMLリクエストメソッド

HTTPとは何ですか?

ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol、略称HTTP)は、クライアントとサーバー間の通信を可能にするために設計されました。

HTTPはクライアントとサーバー間のリクエスト-応答プロトコルです。

例:クライアント(ブラウザ)がサーバーにHTTPリクエストを送信し、サーバーがクライアントに応答を返します。応答には、リクエストの状態情報が含まれ、要求された内容も含まれることがあります。

HTTPメソッド

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH
  • OPTIONS

最も一般的な2つの方法は、GETおよびPOSTです。

GETメソッド

GETは指定されたリソースからデータを請求するために使用されます。

GETは最も一般的なHTTPメソッドの1つです。

注:クエリ文字列(名前/値ペア)は、GETリクエストのURLで送信されます:

/test/demo_form.php?name1=value1&name2=value2

GETリクエストに関する他のいくつかのコメント:

  • GETリクエストはキャッシュできます
  • GETリクエストはブラウザの履歴に保存されます
  • GETリクエストはブックマークとして保存できます
  • 敏感データを処理する際には、GETリクエストを使用すべきではありません
  • GETリクエストには長さの制限があります
  • GETリクエストはデータの取得(変更しない)にのみ使用されるべきです

POSTメソッド

POSTはデータをサーバーに送信してリソースを作成/更新するために使用されます。

POSTでサーバーに送信されたデータは、HTTPリクエストのボディに保存されます:

POST /test/demo_form.php HTTP/1.1
Host: codew3c.com
name1=value1&name2=value2

POSTは最も一般的なHTTPメソッドの1つです。

POSTリクエストに関する他のいくつかのコメント:

  • POSTリクエストはキャッシュされません
  • POSTリクエストはブラウザの履歴に保存されません
  • POSTはブックマークとして保存できません
  • POSTリクエストにはデータ長さの制限はありません

PUTメソッド

PUTはデータをサーバーに送信してリソースを作成/更新するために使用されます。

POSTとPUTの違いは、PUTリクエストがイデンポタント(idempotent)であることです。つまり、同じPUTリクエストを複数回呼び出しても常に同じ結果が得られます。逆に、POSTリクエストを複数回呼び出すと、同じリソースを複数回作成する副作用があります。

HEADメソッド

HEADとGETはほぼ同じですが、応答本文がありません。

言い換えれば、GET /usersがユーザーリストを返す場合、HEAD /usersは同じリクエストを送信しますが、ユーザーリストを返しません。

HEADリクエストは、GETリクエストを送信する前に(例えば、大規模なファイルのダウンロードや応答本文の前に)GETリクエストが返す内容を確認するのに非常に役立ちます。

DELETEメソッド

DELETEメソッドは指定されたリソースを削除します。

OPTIONSメソッド

OPTIONSメソッドは、ターゲットリソースの通信オプションを説明します。

GETとPOSTの比較

以下のテーブルでは、2つのHTTPメソッド:GETとPOSTを比較しています。

  GET POST
戻るボタン/リフレッシュ 無害 データが再提出されます(ブラウザはユーザーにデータが再提出されることを通知するべきです)。
ブックマーク ブックマークとして保存できます ブックマークとして保存できません
キャッシュ キャッシュ可能 キャッシュすることができません
エンコードタイプ application/x-www-form-urlencoded application/x-www-form-urlencoded または multipart/form-data。バイナリデータには多重エンコーディングを使用します。
履歴 パラメータはブラウザの履歴に保存されます。 パラメータはブラウザの履歴に保存されません。
データ長さの制限 はい。データを送信する際に、GET メソッドはデータを URL に追加します;URLの長さには制限があります(URLの最大長さは2048文字です)。 制限はありません。
データタイプの制限 ASCII 文字のみが許可されています。 制限はありません。バイナリデータも許可されています。
セキュリティ

POST に比べて、GET のセキュリティは低いです、なぜなら送信されるデータが URL の一部になるからです。

パスワードや他の敏感情報を送信する際は絶対に GET を使用しないでください!

POST は GET よりも安全です、なぜならパラメータがブラウザの履歴やウェブサーバーのログに保存されません。
可視性 データは URL にすべての人が見ることができます。 データは URL に表示されません。