GETはハガキでPOSTは封筒
5分33秒 | WEBGETPOST
基本情報技術者試験の頻出テーマを解説した音声コンテンツです。
トランスクリプト(字幕テキスト)
ウェブサイトにログインするとき、ありますよね。あと、何かを検索するとき。 ええ。どっちも情報をサーバーに送ってるんですけど、実は裏側では全然違う方法が使われてるらしい、と。 そうなんですよ。ご提供いただいた資料によると、その鍵は情報の運び方にあるようですね。 今回はGETとPOST、この2つの方法について深く掘り下げていこうと思います。 はい。まあ多くの方が、GETはURLに見えて、POSTは見えないっていう、その基本はご存知かもしれないんですけど。 でもじゃあその違いがなぜそれほど重要なのか。私たちのWeb体験にどう直結しているのか。 今回の資料はその本質的なトーンの違いに注目していて、そこを掘り下げると非常に面白いですよ。 トーンですか?確かに資料にある「外から丸見え」というGETの表現、これまず気になりますね。 ええ。これ具体的に誰にどこで丸見えに?なんだかメッセージをハガキで送るような、そんなイメージでしょうかね。 ああ、そのハガキの例えすごくいいですね。まさにそんな感じです。 GETっていうのはですね、情報をURL、つまりアドレスの末尾にくっつけて送るんです。ドットの後に。 ああ、Googleで検索したときに、自分の検索ワードが後ろにズラッと表示されるあれですね。 それですそれです。あれがまさにGETで。で、そのURLって当然ブラウザの履歴に残りますし。 残りますね。サーバーのログにも記録される。場合によっては途中で中継するサーバーにさえ保存されてしまうんです。 なるほど。つまりそのハガキがコピーされて、経由した郵便局の掲示板に全部貼り出されるような、そんなイメージですね。 うわ、それは確かに丸見えですね。すごくオープンで、誰でも読めるっていう雰囲気があります。 ということは、私たちが普段Googleで検索してる言葉って、全部公開ハガキで送られてるみたいな。 まさにその通りです。だからこそ、検索ワードみたいに、まあ見られても問題ない情報に使われるわけです。 なるほど。ただ、送れる文字数に制限があるっていう弱点もあって。 長い手紙はハガキには書けないですからね。 ああ、そうか。昔のサイトだとIDとパスワードをGETで送ってしまうっていう、今では考えられない実装もあったんですよ。 えっと、それってURLにパスワードが丸見えってことですか? そうなんです。user=太郎、pass=1234みたいに。セキュリティも何もあったもんじゃないですよね。 それは怖いですね。じゃあそのハガキのようにオープンな方法があるということは、当然もっとしっかり守られた方法もあるわけですよね。 ええ、もちろんです。それがPOST。 まさに。POSTは情報をリクエストの本体、なんていうかボディっていう、外からは見えない箱の中に入れて運ぶんです。 箱ですか?じゃあこっちは封筒に入れた手紙みたいな。 まさしくその通りです。だからアドレスバーには何も表示されないですし、ブラウザの履歴にも具体的な送信内容は残らない。 ああ、なるほど。なのでログイン情報とかクレジットカード番号とか、絶対他人に盗み見られてはいけない大切な情報を送るための、守りを固めた運び方なんですよ。 なるほどな。その露出度以外にも何か大きな違いってあるんですか?例えばですけど、ブックマークできるかどうか、とか。 ああ、非常にいい点ですね。そうなんです。GETはURLに情報が含まれているので、そのURL自体をブックマークできますよね。 検索結果のページとか。できますね、はい。後で見返したり。 ええ。一方、POSTで情報を送信した直後のページって、その送信するという行為自体はブックマークできないんですよ。 ああ、言われてみれば確かに。これが検索結果はブックマークできるのに、ログイン処理そのものはブックマークしない理由の1つなんです。 つまり、GETは情報を取得するためのオープンで再現可能な方法。で、POSTは情報を提出したり更新したりするための一度きりの閉じた方法。 目的が根本的に違うんですね。 トーンが全く違いますね。GETは明るくオープンな感じですけど、POSTはすごく落ち着いていて堅実な感じがします。 ええ、その再現性が重要なんです。GETは何度実行してもサーバーの状態を変えない、いわゆるべき等性っていうのが保たれるべきとされてます。 検索を何回繰り返しても、別に何も問題は起きないですもんね。 ですよね。でもPOSTで商品購入処理をした後、ブラウザを更新しようとすると「フォームを再送信しますか」って警告が出ることありません? あ、ありますあります。あれそういうことだったんですね。 そうなんです。あれは同じPOSTをもう一回送ると、商品を二重に買ってしまうかもしれないよ、っていう警告なんですね。 はあ、なるほど。つまりGETは見せるオープンな運び方で、POSTは隠すセキュアな運び方。この情報の露出度、そして取得か提出かという目的の違い。 これが私たちが意識しないところで、Web体験の根幹を支えているわけですね。 そういうことです。 で、ここから一つあなたに考えてみてほしい問いがあって。私たちは日々のWeb利用で無意識のうちに、 その情報がハガキで送られても良いものか、それともちゃんと封筒に入れるべきものか、どれだけ意識できているだろうか、ということです。 この視点を持つと、普段何気なくクリックしているボタンの裏側にある設計思想が、少し違って見えてくるかもしれませんよ。
このコンテンツは Web society で視聴・学習できます。