クッキーの基礎知識
クッキーの仕組み
クッキーとはサーバーとクライアントの間でデータをやり取りするための仕組みです。 クッキーを作成するためにはサーバー側がレスポンスのヘッダに以下のような値をつけてクライアントへ送信する必要があります。
Set-Cookie: UserID=123; 
クライアントのブラウザは次回リクエストを送る際にリクエストのヘッダに以下のようにクッキーの値を含めてリクエストを送るようになっています。
Cookie: UserID=123; 
サーバー側でクッキーを作成する際に有効期限を設定可能です。
Cookie: UserID=123; expires=Wdy, 26-9-2012 12:34:56 GMT;
他にはクッキーを含める範囲、安全なサイトのみに送るかなども設定可能です。
Cookie: UserID=123; domain=article.higlabo.com; path=/; secure
残りの章でそれぞれの動きを解説していきます。 http://www.futomi.com/lecture/cookie/specification.html
クッキーの有効期限の指定と無効化
有効期限を指定しない場合
有効期限を指定しない場合、そのクッキーのデータはブラウザを閉じるまで有効です。クッキーの情報はメモリ上に保持されていてブラウザを閉じると破棄されます。
有効期限を指定した場合
Set-Cookieの中でexpiresを指定すると有効期限を設定可能です。 有効期限を指定した場合ブラウザを閉じてもクライアントのファイルとして保存され再度ブラウザを開いてサイトにアクセスしたときにはクッキーが送信されます。 有効期限の設定のフォーマットは決まっていて以下のフォーマットで指定する必要があります。
Wdy, DD-Mon-YYYY HH:MM:SS GMT
ブラウザはクッキーのキーごとに有効期限を管理していて有効期限切れのクッキーはサーバーには送られません。
クッキーの送信範囲の指定
クッキーはリクエストの際にヘッダにセットされて送信されると上記の章で書きましたが、実際にはクッキーを発行したドメインとパスに一致した場合のみ送信されます。 例えばhttp://article.higlabo.com/ja/でクッキーを発行すると以下のようになります。
http://article.higlabo.com/ja/index.html --送られる
http://article.higlabo.com/en/index.html --送られない
http://www.google.com/ --送られない
クッキーをレスポンスに含める際に特にdomainとpathを指定しなかった場合は発行した場所の値がそのまま使用されます。 例えばhttp://article.higlabo.com/ja/index.htmlでクッキーを発行した場合は
Set-Cookie: UserID=123; domain=article.higlabo.com; path=/ja/
という形になります。
送信範囲のテスト結果
さまざまなクッキーを発行していったいどこまでリクエストに含まれるのか実験した結果を下に一覧で示します。
送信される
送信されない
発行:Domain=article.higlabo.com; path=/
http://article.higlabo.com/ja/index.html
http://article.higlabo.com/ja/web/index.html
http://article.higlabo.com/en/index.html
http://www.higlabo.com/ja/index.html
http://www.higlabo.com/en/index.html
http://www.google.com/
ドメインは後方一致で検証されるのでhiglabo.comの場合は以下のようにarticle.higlabo.comとwww.higlabo.comの両方にクッキーが送信されます。
発行:Domain=higlabo.com; path=/
http://article.higlabo.com/ja/index.html
http://article.higlabo.com/ja/web/index.html
http://article.higlabo.com/en/index.html
http://www.higlabo.com/ja/index.html
http://www.higlabo.com/en/index.html
http://www.google.com/
パスは前方一致なので/ja/を指定すると/ja/と/ja/web/の両方が含まれることになります。
発行:Domain=higlabo.com; path=/ja/
http://article.higlabo.com/ja/index.html
http://article.higlabo.com/ja/web/index.html
http://article.higlabo.com/en/index.html
http://www.higlabo.com/ja/index.html
http://www.higlabo.com/en/index.html
http://www.google.com/
Create at 2012/9/27 LastUpdate 2012/9/27