Web全般
2021.5.14
Web基礎知識まとめシリーズ、今日はCookieとSessionについて、それぞれの違いをまとめます。
HTTPは、クライアント側からサーバーへリクエストし、サーバーからレスポンスを返す一往復で通信が切断されます。
そしてそのあと再度クライアント側からリクエストを送信しても、サーバーはそのリクエストが初めてのものなのか、前からの続きなのか記憶していません。
このようなサーバーの状態のことを、State(状態)less(〜のない)、ステートレスといいます。
しかし、ログイン状態やショッピングカートの中身など、前の通信時の状態を覚えておいてほしい場合があります。 ページ遷移するたびにログアウト状態になったり、カートが空になっていては大変です。
そこで、状態を保持するためのものがCookieです。
Cookieとは、クライアントに保存される小さなデータ(文字列のみ)です。 サーバーへアクセスするたびに自動生成され、サーバーとのやりとりで合言葉のように使います。
サーバーは、Cookieによって、アクセスしてきた相手が誰なのか調べることができるのです。
※過去の日時を指定するとCookieが削除される
※ExpireとMax-Age両方指定した場合はMax-Ageが優先される
※複数のドメインを対象にする必要がない場合は指定しないほうが安全
Cookie: name=value;
CookieはHTTPOnly属性をつけないと、JavaScriptからの読み書きができてしまいます。
セキュリティ上は注意が必要です。
Sessionとは、一連の処理の始まりから終わりまでを表す概念のことです。
ECサイトのような同一利用者からのアクセスを関連性のある一連のアクセスとして扱いたい場合、Cookieを使ってSession管理が行われます。
クライアント側はCookieにセッションIDを載せてリクエストすることでセッションの維持ができるようになります。
ブラウザがサーバーに接続されている間(ブラウザを開いている間)サーバーに保存されます。
Megumi Tanimoto
Editor
フロントエンドエンジニア1年目。
エンジニアライフ、技術的なアウトプットを中心に発信します。