「プロになるためのWeb技術入門」を読んだ。CookieとSession
HTTPはステートレスなプロトコル
httpは状態を持てない。
なら、どうやってログイン状態とかを記憶してるのか?
Cookie
HTTPの仕様を拡張して、WebアプリケーションとWebブラウザの間で情報を交換できるようにしたもの。
流れ
webサーバからwebブラウザへ、HTTPのレスポンス・ヘッダーを利用して小さな情報を送る。 「名前 = 値」の組み合わせで表す。これがCookie。
この時、webアプリケーションで、Cookieにどんな情報をいれるかを決める。webサーバからCookieを受け取ったwebブラウザは、次回同じwebサーバにアクセスする際、受け取ったCookieをそのままHTTPリクエスト・ヘッダに入れて返す。
webアプリケーション側で、リクエスト・ヘッダに入っているCookieを調べることで。アクセスしてきた相手がどのような相手なのかを知る。
Cookieを受け取ったwebサーバと異なるwebサーバに対しては、Cookieを送れない。
Session
Cookieだとツールを使ったりして丸見えなので、より安全に多くの情報を保持するための方法がSession。
処理の進行状況を管理
ログインして〜
商品をついかして〜
注文内容を確認して〜
みたいな、一連の処理の流れのことを 「Session」 と呼ぶ。
Sessionの状態をどこに保持するか
銀行の受付番号みたいに、 SessionID として Cookieを利用して保持 する。
流れ
webサーバがSessionIDを発行して、HTTPレスポンスのCookieへ格納してクライアントへ渡す。
サーバはCookieからSessionIDを取り出して、それを元にメモリ上にもっているクライアントの状態(ログイン状態やカートの中身)を復元する。
PHPだとこんな感じでSessionを格納する。
// セッション開始 session_start(); // セッション変数にユーザ名を格納する $_SESSION['user'] = $_POST['user'];
SessionIDから、ユーザー名とかを識別して、クライアントに返す。
感想
これもしているようで、はっきりしてなかった。 やっと自信もって人に話せるくらいに理解できかな。