今回の記事ではCookie(クッキー)とSession(セッション)の違いとその仕組みについて解説していきます。
CookieとSessionはECサイトなどのWebアプリケーションにおいて、必ずと言っていいほど出てくる単語です。
またCookieとSessionの違いを詳しく理解している人も少ない印象です。これらの仕組みや違いが曖昧な人は、ぜひ本記事を通して理解を深めてください。
目次
クッキー(Cookie)
クッキーとは
Cookie(クッキー)とは「名前=値」の形でブラウザ上にアクセス情報やユーザー情報が保存される仕組みです。
Webサイトを訪問していると、「Cookieを有効にしますか」と聞かれることがあると思います。この場合、有効にすることでそのサイトへのアクセス情報をブラウザに保存されるようになります。
Cookieに保存する情報はWebサイトによって異なります。つまりWebサイトに指定された情報を保持することになります。
これにより次回訪問時などで、Cookieの情報を元に自動ログインや買い物かごの復元などがされます。
Cookieとよく混同されるのがキャッシュです。Cookieとキャッシュは全く異なる仕組みなので間違えないようにしてください。
キャッシュはWebページの表示速度向上を目的としており、保持するデータはWebページそのものの情報です。対してCookieはユーザーのアクセス情報を保持します。
クッキー:Webサーバーへの送信
すでにアクセスするサイトのCookieを保持していた場合、ブラウザはWebサーバーにリクエストと共にCookieを含めて送信します。
Cookie付のリクエストを受けたWebサーバーは、Cookieの情報を元にレスポンスを行う、という一連の流れになります。
Cookieを受け取ったサーバーとは異なるWebサーバーに対してはそのCookieは送りません。
セッション(Session)
セッションとは
セッションとは一連の通信開始から終了までの処理を意味します。Webアプリケーションではユーザーのログイン情報や状態の保持に利用されます。
Webの通信にはHTTP(Hypertext Transfer Protocol)が使用されます。ご存じのようにHTTPはステートレスなプロトコルです。
例えばオンラインショッピングを考えると、まず最初にユーザーはログインを行います。そのあとに商品をカートに入れて、最後にカートに入った商品を行います。これら一連の操作は複数のWebページをまたがって行われます。
このようなユーザー情報を保持し、一連の操作を保持するような仕組みを実現するためにセッションを利用します。
セッションを簡単に説明すると、アクセスするユーザーを特定するための仕組みということです。
セッションが保存される場所
セッションの詳しい情報はWebサーバー側で保持します。このセッション情報はデータベースやファイルなどで管理・保持します。
ブラウザ側ではCookie(クッキー)にセッション情報が保存されます。Cooekie以外の方法もありますが、現在ではCookieを利用するのが主流です。
またCookieに保存するセッション情報は詳しい個人情報などではなく、次項から説明するセッション管理で使用するセッションIDだけ保存します。
そのためクライアント側ではセッションIDしか見えないため、万が一改ざんされても大きな影響はありません。
セッション管理について
セッションの仕組みを利用して、リクエストを送信するユーザー(Webブラウザ)を特定するためにセッション管理を行います。
セッション管理にはWebサーバーが発行するセッションIDを使用します。
Webサイトが表示される流れは、次図のようにブラウザからWebサーバーへ処理要求(リクエスト)が送信され、Webサーバーからブラウザへ応答(レスポンス)を送信し、ブラウザがレスポンスを受信してページを表示するという流れです。
発行したセッションIDはレスポンスと共にブラウザへ送信します。ブラウザもWebサーバーにリクエストを送信するたびに、リクエストにセッションIDをくっつけて送信するようになります。
Webサーバーはこのリクエストに付いているセッションIDを確認することで、誰からのリクエストなのかがわかる仕組みになっています。
どのセッションIDがどのユーザーなのかWebサーバー上で管理しており、これがWebサーバーにおけるセッション管理です。
CookieとSessionの違い
ここまでに解説した内容をもとに、CookieとSessionの違いを確認していきましょう。
Cookieの情報とSessionの情報はどちらもWebサーバーによって作られます。
それぞれの保存先は、Cookieはアクセス元のブラウザに保存され、Sessionはブラウザ(セッションID)とサーバー側に保存されます。
CookieとSessionの役割も大きく異なります。
CookieはWebサイトへの訪問時の手間を省いてくれたり、その情報を元にその人に有益な情報(広告など)を配信するために利用されます。
Session(セッション)は主にユーザーの特定に利用されます。セッション情報はサーバー側にのみ保存されるため、安全性はとても高いです。
まとめ
今回の記事はいかがでしたでしょうか。
Webアプリケーションを作るうえでCookieとSessionは必要不可欠な知識です。ぜひこれら知識を活かして、有用なWebアプリケーションを制作してください。