ブラウザにURLを打つと、裏では決まった「やりとりの作法」でページが運ばれてきます。それがHTTP/HTTPSです。リクエストとレスポンス、メソッド、ステータスコード、そして暗号化のしくみまで、会話でほどいていきましょう。
アドレスバーって http:// のときと https:// のときがあるじゃん。
あれって何が違うの?
いい入口ね。
HTTPはWebの通信ルールそのもの。
HTTPSはそのHTTPに暗号化のフタをかぶせた版よ。
フタ?
ふふ、たとえるならHTTPはハガキ、HTTPSは封筒。
ハガキは途中で誰でも文面を読めるけど、封筒に入れれば中身は守られる。
今のWebは個人情報を扱うから、ほぼ全部が封筒、つまりHTTPSなのよ。
じゃあ http だけのサイトって、ちょっとあぶないのぉ?
そうですね。
パスワードなどが平文のまま流れる可能性があります。
だからブラウザは http だけのページに『保護されていない通信』と警告を出すんです。
通信の中身を整理すると、クライアントが出すリクエストと、サーバが返すレスポンスの往復が基本です。
注文して、料理が出てくる感じだ。
じゃあ『注文の仕方』にも種類があるってこと?
鋭いです。
それがHTTPメソッド。
代表はGET(取得)とPOST(送信)の二つ。
GETは検索のようにURLへ値が見える形で付き、POSTはフォーム送信のように本文に入れて送る。
さらにPUT(更新)とDELETE(削除)もあります。
取得・作成・更新・削除…なんだかCRUDみたいですぅ!
その対応づけ、覚え方として優秀よ。
GET=Read、POST=Create、PUT=Update、DELETE=Deleteと並べると頭に残るわ。
で、レスポンスが返ってくると。
404 Not Found ってよく見るやつ、あれもレスポンス?
そう、それがステータスコード。
3桁の数字で結果を伝えるの。
百の位で大まかに分かれるのがコツよ。
2xxは成功、3xxはリダイレクト(別のURLへ転送)、4xxはクライアント側のミス、5xxはサーバ側の異常。
番台で見当がつきます。
なるほど、4で始まったら自分(ブラウザ側)が悪い、5で始まったら向こう(サーバ)が悪い、ってことね。
マジ分かりやすいじゃん。
代表は200(成功)、301(恒久リダイレクト)、401(認証が必要)、403(アクセス禁止)、404(見つからない)、500(サーバエラー)、503(混雑で一時的に不可)。
401と403の違いは試験で狙われるわよ。
えっと…401と403って、どっちもダメな感じで紛らわしいですぅ。
401は『あなたが誰か分からない、ログインして』。
403は『誰かは分かったけど、その権限はない』。
入館証を持っていない人と、入館証はあるが立入禁止区域に来た人、の違いです。
あぁ〜、それなら区別できそうですぅ!
バージョンも進化しています。
HTTP/2は複数のやりとりを束ねて速くし、HTTP/3はUDPベースのQUICを採用してさらに高速・低遅延になりました。
へぇ、HTTPもアップデートされてくんだ。
じゃあ最初の暗号化、封筒のしくみは結局なんなの?
それがTLS。
HTTPSはHTTPをTLSで包んだもの。
TLSの旧名がSSLで、今でも『SSL証明書』と呼ばれたりするけど中身はTLSよ。
通信相手が本物か確かめるためにサーバ証明書を使います。
これは認証局(CA)という第三者が発行し、なりすましを防ぎます。
アドレスバーの鍵マークは、ちゃんと封筒になってますよ〜っていう印なんですねぇ。
Googleとかでログインボタン押すと別画面に飛ぶやつ、あれもこの話?
それはOAuthです。
パスワードそのものを渡さず『この情報だけ使ってよい』と許可を委ねる、認可のしくみ。
認証(本人確認)とは別物なので注意です。
ちなみに、Webで状態を覚えておく道具も押さえてね。
Cookieはブラウザ側に小さなデータを置く方式、セッションはサーバ側で状態を管理するしくみよ。
では仕上げ。
HTTPはWebの通信ルール、HTTPSはそれをTLSで暗号化。
やりとりはリクエストとレスポンスで、メソッドが操作、ステータスコードが結果。
番台で意味を読む癖をつければ得点源よ。
確認クイズ
WebサーバにアクセスしたところHTTPステータスコード「403」が返ってきた。この意味として最も適切なものはどれか。
- リクエストは成功し、内容が正常に返された
- ログイン認証が済んでいないため認証が必要である
- 本人は識別できたが、その操作を行う権限がない
- 指定したリソースがサーバ上に見つからない
こたえを見る
正解: 3. 本人は識別できたが、その操作を行う権限がない
403 Forbidden は、相手は識別できているが権限がなくアクセスが拒否された状態を表します。認証そのものが必要な場合は401、リソースが存在しない場合は404、成功は200です。401(誰か不明)と403(権限なし)の違いに注意しましょう。