はじめに
DjangoでECサイトを作っていてsessionという謎のワードにぶち当たったので調べてみました。
sessionとは
クライアントごとの情報
WEBサーバー内に保存されている
セッションはクライアントWebブラウザを閉じるまで保存する
リンクなどを張ってページを移動しても内容を保持することができる
sessionの原理
- ユーザーがWEBサイトにアクセス
- WEBサイトのサーバーがユーザーに対してセッションIDというものを付与
- ユーザーのブラウザがこのセッションIDを保持
- 通信(ページ移動など)するたびにセッションIDをWEBサーバー側に送る
- セッションIDによってWEBサイトはたくさんのユーザーの中から特定のユーザーを識別できる
YoutubeやAmazonなどのサイトに置き換えて考えると分かりやすい
このサイトがECサイトを例え使って説明している
3番のブラウザがセッションIDを保持しておく場所をcookieという。
cookieにはその他にも色々な情報が保持されている。
coolieとは
Cookie は、アクセスしたウェブサイトによって作成されるファイルです。サイトでは、Cookie を使用して、ユーザーのログイン状態を維持したり、ユーザーのサイトの利用設定を記憶したり、ユーザーの地域に関連する情報を提供したりできます。
WebサーバーからWebブラウザへHTTPレスポンスのヘッダを利用して小さな情報を送る。
この時送られる情報の一つにcookieが含まれている。
Cookieは、サーバアクセスするたびに自動送信される
もちろんsessionを作ったウェブサイト以外には他のサイトが作ったcookieを見せない
自分のcookieとやらを見てみた
chrome://settings/siteData
にアクセスすると見れるらしい。
youtube.comによって作らたcookieはこんな感じだった。
例えば、LOGIN_INFOにはログインしているかどうかの情報が入っているのだろう。
これらの情報をもとにしてWEBアプリケーション側はユーザーごとにサービスを提供している。
sessionを扱うメソッド
exists():引数に与えられた「session_key」に対するセッションが存在するかを判定するメソッド
create():はセッションキーの生成や、セッションの生成を行うメソッド
save():はセッションをバックエンドに保存するメソッド
delete():はバックエンドから該当のセッションを削除するメソッド
load():はバックエンドからセッションをロードするメソッド