このページでは HTTP/1.1 プロトコルのメソッドである get と post の違いに関して説明します。
スポンサード リンク
WebブラウザからWebサーバにリクエストを送信する場合、リクエストは以下で構成されます。
| HTTPリクエストのURLそのもの |
| HTTPヘッダー |
| HTTPリクエストのBody部 |
Webサーバにデータを送信する方法は GETとPOSTの2種類があります。
デフォルトではGETが使用されます。Webブラウザ上でリンクをクリックした場合も「このリンクのページを取得してください」というGETメッソッドが送信されています。
GETは一見するとデータの取得の手段に思えますが、実際にはデータを送る手段です。
GETとPOSTの違いは以下の通りです。
| GET | POST | |
| データ送信手段 | HTTPリクエストのURLにパラメータとしてデータを設定。 | Body部にデータを設定。 |
| データ種類 | URLに記載するためテキストデータのみ。 | テキスト、バイナリどちらも可能。 |
| データ長 | 少量。ブラウザにより長さの制限あり。 | GETと比較して大容量。 |
| アクセスログ | URLにデータが含まれるため、アクセスログを記録する機器(ProxyやFirewall)にURLの一部としてデータが記録されてしまう。 | データはBody部に含まれるため、ProxyやFirewallなどのアクセスログに記録されない。 |
| ブラウザへのキャッシュ | 一般的なブラウザでは結果がキャッシュされる。 | 一般的なブラウザでは結果がキャッシュされない。 |
| デメリット | ProxyやFirewallにデータが記録されるため、ユーザ名、パスワード、口座番号の送信するのにGETを使用してはいけない。 | GETと比較してデータは漏れにくいが、パケットモニタなどを利用すれば簡単にデータの漏えいが可能なため、重要なデータには別途 TLS(暗号化)通信などが必須。 |
スポンサード リンク