「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

「GETメソッド」と「POSTメソッド」の違い

スポンサーリンク

予備知識


用語意味
Webブラウザホームページを見るときに使うソフト
サーバサービスや機能を提供する側のコンピュータ
Webサーバホームページ関連の仕事をしているサーバ
URLホームページの住所。ホームページの置いてある場所とかファイル名とかを示す情報
HTTPリクエストWebブラウザからWebサーバに対して出されるお願い
HTTPリクエストメソッドWebブラウザからWebサーバに対して出されるお願いの種類

それぞれの用語の意味


用語意味
GETメソッドWebサーバに送る値をURLにくっつけて送るやり方。本来の意味は「このページをくれよ」な お願い
POSTメソッドWebサーバに送る値を見えないところにくっつけて送るやり方。本来の意味は「このデータをやるから追加しとけ」な お願い

似ているところ


どちらもHTTPリクエストメソッドです。
WebブラウザさんからWebサーバさんに対して出されるお願いの種類です。


「GETメソッド」と「POSTメソッド」の違い1

違うところ


WebブラウザさんからWebサーバさんに値を渡すときの、値の渡し方が違います。

GETメソッドは渡す値をURLの後ろにくっつけます。
例えば

https://wa3.i-3-i.info?param1=value1&param2=value2

のような形です。

POSTメソッドは渡す値を人間様の目には見えないところにくっつけます。
そのためURLは

https://wa3.i-3-i.info

のような形になります。
あまり長ったらしくはなりません。

例えば、あなたが、お手紙を送るとしましょう。
前提として、送り先の住所がURLです。

封筒の宛先が書いてあるところに、ついでに内容も書いて送るのがGETメソッドです。
内容を書いた紙を封筒の中に入れて送るのがPOSTメソッドになります。

宛先部分に内容が書いてあるGETメソッドは、郵便配達の人にも書いてある内容が読めてしまいます。
POSTメソッドでは郵便配達の人は書いてある内容を(ズルをして封筒を開けてしまわない限りは)読めません。


個人的な使い分け


用語の使い分けではなく実際の使い分けですが、値をWebサーバさんに渡す必要がある場合は、できる限りPOSTメソッドを使うようにしています。
POSTメソッドが使えない場合や、使うと不都合が生じるときのみGETメソッドで渡しています。

理由は

1.GETメソッドはPOSTメソッドと比べて渡せる情報量が少ない
2.GETメソッドは渡した値が履歴に残る


からです。
特に2番目の方が大きな理由ですが、順番に見ていきましょう。

GETメソッドはURLにくっつけて値を送ります。
URLの長さの限界が送れる値の量の限界です。

POSTメソッドにも限界はありますが、今のところ、POSTメソッドの方がGETメソッドよりも多くの情報を送れるようです。
これが「1.GETメソッドはPOSTメソッドと比べて渡せる情報量が少ない」です。
封筒の宛先部分に頑張って小さい文字を書くよりも便箋に書いて封筒の中に入れて送った方が、たくさんの情報を伝えられますよね。
それと同じです。

また、GETメソッドはURLにくっつけて値を送ります。
URLを見れば、渡した値が分かってしまいます。
履歴としてそのまま残ってしまいますので、複数人で同じパソコンを使っている場合は、同じパソコンを使っている他の人に渡した値が分かってしまいます。
プロキシという仕組みではURLを記憶しておくので、場合によっては全然関係ない別の人にも渡した値を知られてしまいます。
最悪の場合は、検索エンジンさんに載ってしまって、全世界の人に知られてしまうかもしれません。
特にパスワードを渡す場合は、絶対にGETメソッドを使わないでください
大事な情報を封筒の宛先部分に書いてはいけません。
(外からは見えない)中の便箋に書いてください。

これがPOSTメソッドを優先的に使っている理由です。

注意点として「この場合はPOSTメソッドではなくGETメソッドを使うよ」という場合も あります。
それは

ページ番号的なものを渡すとき

です。

例えば『わわわIT用語辞典』の「新着用語」の2ページ目のURLは

https://wa3.i-3-i.info/newlist.html?p=2

です。
「p=2」の部分が「2ページ目(を表示してね)」を意味しています。

これをPOSTメソッドにすると

https://wa3.i-3-i.info/newlist.html

になります。
「2ページ目(を表示してね)」は見えないところに書かれます。

それぞれのページをお気に入りに登録したとしましょう。

GETメソッドの場合は「新着用語の2ページ目」がお気に入りに登録されます。
一方、POSTメソッドの場合は「新着用語の1ページ目」がお気に入りに登録されます。
「2ページ目」を表す情報が含まれないからです。

まとめると

1.値をWebサーバに渡さない:GETメソッド
2.値をWebサーバに渡す:基本的にはPOSTメソッド
3.Webサーバに渡す値も含めて1つのURLと見なせる:(パスワードのような他の人に見られてはいけない情報が含まれていない場合は)GETメソッド


という使い分けです。


備考


このページの説明は、本来の「GETメソッド」「POSTメソッド」の意味からは少し外れています。

本来の意味で言えば、GETメソッドは「このページをおくれ」な お願いです。
一方のPOSTメソッドは「このデータをやる(から追加しとけ)」な お願いです。
ちょっと違いますが、イメージは

GETメソッド:受け取るときに使う
POSTメソッド:送るときに使う


です。


「GETメソッド」と「POSTメソッド」の違い2

とはいえ、現実問題、GETメソッドとPOSTメソッドの違いが気になるのはプログラムを作るときが多いはずです。

プログラムを作るときに意識することになるGETメソッドとPOSTメソッドの違いは、Webサーバに対する値の渡し方です。
そのため

GETメソッド:値をURLの後ろにくっつけて送るやり方
POSTメソッド:値を見えない所に隠して送るやり方


と表現しました。


スポンサーリンク
書籍画像027
書籍画像069


書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
サイバー忍者入門 忍者・スパイ・軍隊・ハッカーに学ぶ フルスタック・ハッキング
タヌキとキツネ