きっかけとなったのは、itproに記載されていた結城 浩さんの記事です。
「簡単実装で学ぶWeb技術」
http://itpro.nikkeibp.co.jp/article/COLUMN/20080331/297574/
これまで cookie は利用してきたものの、その中身を殆ど理解していなかったので、この記事に沿ってcookie を理解したいと思います。
Set-Cookie の書式
itproの記事にもあるとおり、serverがclientにCookieを送信する際のSet-Cookieの形式は次のようになります。
Set-Cookie: Cookie名=値; domain=ドメイン名;path=パス名; expires=有効期限; secure
domainやpathは、itproの記事で次のように解説されています。
(rfcを見るなら http://ftp.ics.uci.edu/pub/ietf/http/rfc2109.txt )
簡単なSet-Cookieのテスト
まず、はじめに次のtest scriptでset-cookieの基本動作を確認してみます。
#!perl use strict; use warnings; print <<"EOD"; Set-Cookie: key1=value1; path=/ test Set-Cookie EOD
このscript (cgi)にfirefox + firebug + firecookie で確認すると、次のように表示され、ブラウザ側でcookieを受信できたことが分かります。
cookieを使用したログイン管理
itproの記事や日経ソフトウェアのサンプルプログラムにあるとおりでしたので、今回はここまでにしておきます。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080331/297574/
http://itpro.nikkeibp.co.jp/article/MAG/20061212/256629/web0702.zip
サンプルプログラムでは、Digest::MD5を使用してuniqueなidを作成していましたが、念のため、書き留めておきます。
use Digest::MD5 qw(md5_hex); sub create_unique_id($) { my $trial = shift; return md5_hex($secret_key . localtime() . $$ . rand() . $trial); }