このページでは 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(暗号化)通信などが必須。 |
スポンサード リンク