GETメソッド
Webページや画像などのリソースを取得するためのHTTPメソッド。検索条件などはURLのクエリ文字列に含めて指定できる。
イマシルちゃんの解説
ブラウザでWebページや画像を開くときは、サーバへ必要な情報を要求するよ。
この取得の要求に使うHTTPメソッドがGETなんだ。
メソッドは、サーバにどんな処理を求めるかを示すものだよ。
検索結果が欲しいときは、検索語などの条件をURLの「?」に続くクエリ文字列に含めて送れるの。
サーバはそのURLに対応する内容を返し、ブラウザが表示するんだ。
GETは情報の取得を目的とするから、注文の確定や投稿の削除など、データの変更を求める操作には使わないようにするよ。
この解説はわかりやすかったですか?
より深い解説
定義
GETは、HTTPのリクエストで、指定したリソースの取得を要求するメソッドである。送りたいデータは、URLの「?」以降に キー=値 の形で付ける。これをクエリ文字列という。複数の値は「&」でつなぐ。
GET /search?q=network&page=2 HTTP/1.1
Host: example.com
このように、データはリクエストの1行目、つまりリクエスト行に含まれる。GETのリクエストには、通常メッセージボディを付けない。
GETの性質
| 性質 | 意味 |
|---|---|
| 安全(safe) | サーバの状態を変えない、読み取り専用の操作として扱われる |
| べき等(idempotent) | 同じリクエストを何回送っても、結果が1回送ったときと同じになる |
| キャッシュできる | ブラウザやプロキシが応答を保存し、再利用できる |
| ブックマークできる | データがURLに含まれるので、URLだけで同じ要求を再現できる |
機密情報を送ってはいけない理由
GETで送ったデータはURLに含まれるため、次のような場所に残りやすい。
- ブラウザの閲覧履歴
- Webサーバやプロキシのアクセスログ
- 別サイトへ移動したときのRefererヘッダー
HTTPSで暗号化していても、通信相手の機器や手元のブラウザにはURLが残る。そのため、パスワードや個人情報の送信にはPOSTメソッドを使う。
また、URLの長さにはブラウザやサーバごとの上限があるため、大きなデータの送信にも向かない。
POSTメソッドとの比較
| GET | POST | |
|---|---|---|
| 目的 | 取得 | 送信して処理させる |
| データの入る場所 | リクエスト行(クエリ文字列) | メッセージボディ |
| べき等か | はい | いいえ |
| キャッシュ | できる | 原則できない |