Cookieとセッション

2020/08/31 08:32

誤解の多いCookieとセッションについてわかりやすく動画で解説しました。Cookieを利用して情報を管理した場合の構成と、セッションを利用した場合のそれを確認しています。2本の動画で、それぞれ10分強の長さです。

Cookieとセッションについての概要

CookieはWeb開発でよく使われる機能の一つで、ブラウザの中にWebサイトに関連した情報を保存しておける機能です。セッションは主にCookieにブラウザごとのID(セッションID)を保存しておき、ユーザーの一意性を担保する仕組みを指します。サーバーサイドで詳細な情報と関連づけることでユーザーごとに違った情報を管理します。

誤解が多いこの二つについて解説します。

Cookieとは

Webサイトで複数のWebページを画面遷移する際に、以降のページでも利用したい情報(例ではユーザー名とパスワード)を保持しておけるようになる、HTTPの仕様の一つです。Webブラウザに情報を保存して、それをサーバーへ通信するリクエストに入れて通信します。 Cookieの情報はクライアントに保存されます。

セッションとは

Cookieに保存したID等を利用して各ブラウザを判別し、ユーザーの一意性を担保する仕組みです。ユーザーとそのユーザー専用の情報を関連づけてサーバー内で管理します(動画ではemail、パスワードが入っているような説明になってしまいましたが、セッションIDに関連付けてユーザーID保存する実装が多いです)。 Cookie内にはセッションIDのみが保存され、情報はサーバー内にのみ保存されます。

セッションの実装にCookieを使用しない方法もありますが、多くのWebシステムではCookieを活用していることが多いです。

よくある誤解

Cookieとセッション本来対比される概念ではありません。CookieはHTTPの仕様で提供される機能の一つで、セッションは大抵Cookieを利用して実現されるユーザー管理の概念です。

また、セッションという言葉が様々な場所で使われるので、検索エンジンで似たような用語が一緒にヒットしてしまいます。その為、最初の頃かなり誤解してしまう人がいるようです。以下の「セッション」は今回のセッションとは異なるものです。

HTTPセッション

これはHTTP通信のプロトコルにおけるセッションの概念を説明しています。本エントリで説明しているセッションよりも、通信の実装に近い別のものを指しています。リクエストしてレスポンスする、というHTTPリクエストとレスポンスの組み合わせのことを「セッション」と説明しています。

セッションストレージ(sessionStorage)

HTML5という新しめの仕様の中に、Cookieとは別にWebブラウザが持つ小さなデータベースに情報を保存できるWeb Storageという機能があります。こちらもまた、本エントリで説明しているセッションとは別の概念になります。

アクセス解析におけるセッション

WEBへのアクセス解析における用語にも本エントリとは別の「セッション」という言葉があります。これはアクセス解析に都合が良い単位でユーザーの行動を区切った単位を呼んでいます。

ステートレス / ステートフル

今回の文脈では、通信が複数回行われる際に、状態が維持されているのを「ステートフル」、状態が毎回クリアされるのを「ステートレス」と言います。ステートフルを実現する為の仕組みが、Cookieです。

この記事を書いた人

佐藤 正志

サークルアラウンド株式会社 代表取締役