hatoのプログラミング

IT関連の学習記録です。

Cookie(クッキー)とセッション

はじめに

Cookieってなに?と聞かれても具体的に説明できないな・・と思ったので自分の理解を深めるためにも、Cookieについて書いてみます。ついでにCookieと関連の深いセッションについても書きます。

Cookie

Cookieとは、サーバとクライアント間で情報をやり取りする仕組み、またはそのやり取りする情報を指すようです。

ここまではなんとなく分かっていました。ではどういう仕組みかというと...

クライアントがサーバにリクエストを送ったら、サーバはクライアントに対してレスポンスと同時にCookieを渡す。クライアントはサーバに次のリクエストをするときに渡されたCookieをサーバに返す。そして、サーバはクライアントに対してレスポンス時にまたCookieを渡す。このようにサーバとクライアントはCookieを渡して返して...とやり取りするみたいです。

ではなぜCookieをやり取りするのかと言うと、サーバ側がクライアントを識別するのに役立つからのようです。Cookieにはクライアント独自の情報を入れることができるため、渡されたCookieを見ればクライアントを特定できるんですね。Cookieは箱のようなもので、その中にパスワードなどを入れるイメージですね。CookieにユーザAのパスワードが入っていたらユーザAからのリクエスト、ユーザBのパスワードが入っていたらユーザBからのリクエストというように、サーバ側は誰からリクエストが来たか特定できると言うわけです。

セッション

セッションは、セッションIDと呼ばれる情報をCookieとしてやり取りすることで、サーバがクライアントを識別する仕組みです。

Cookieの説明でパスワードをやり取りする話をしましたが、パスワードではなくセッションIDをやり取りするのがセッションってことですね。一般的には、このセッションの仕組みがユーザを特定するために利用されているようです。

パスワードをやり取りすると、通信の途中で盗聴されてしまうかもしれないので、セキュリティ上よろしくない。なので、パスワードのような個人情報ではなく、セッションIDと呼ばれるそれ自体は意味を持たない文字列をやり取りしているってわけです。

まとめ

Cookieは、サーバとクライアント間で情報をやり取りする仕組み。またはそのやり取りする情報のこと。

セッションは、サーバとクライアント間でCookieの仕組みを利用してセッションIDと呼ばれる情報をやり取りすること。この仕組みによりサーバがユーザを識別している。

参考

小森裕介(2010) 『プロになるためのWeb技術入門』技術評論社