pgoriの怠惰なブログ

適当なことを適当に書いていく日記

Cookieについて

レコメンドからの購入ログ等を収集するためにCookieを使って実装したのですがアフォなことをしたのでメモしておきます。
レコメンドは、商品のページからカートに入れたときに表示される「こんな商品もオススメ!」ってヤツのことです。
このレコメンド商品をカートに入れて購入された、レコメンドを介さず購入されたとかそんなことをCookie使って収集しようとしました。

// Cookie作成する
Cookie cookie = new Cookie("testCookie", str);
// Cookieぶちこむ
ResponseUtil.getResponse().addCookie(cookie);

なんのことはないこれでOKと思いローカルでデバックしてみたらうまくいかない…
ブラウザのCookieを確認してもちゃんと存在しているのに、Cookieはないとなってしまう。

原因はとても単純でした。
Cookieを作成したパス以下でないとCookieを参照できない。
これです。
/aaa/bbb/ で作成したとしたら/aaa/bbb/* でしか参照できないということです。
なので正しくは

// Cookie作成する
Cookie cookie = new Cookie("testCookie", str);
// Cookieパスを設定する
cookie.setPath("/");
// Cookieぶちこむ
ResponseUtil.getResponse().addCookie(cookie);

ですね^^

Cookieを削除するときも同様にパス指定してあげないとダメです。
指定しないと新しくそのパスにCookieが作成され一瞬で消えるだけです。

Cookie cookie = new Cookie("testCookie", "");
cookie.setPath("/");
cookie.setMaxAge(0);
ResponseUtil.getResponse().addCookie(cookie);

■参考
Cookie
Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させるしくみ。
http://e-words.jp/w/Cookie.html
レコメンド:
電子商店などで、ユーザの好みを分析し、各ユーザごとに興味のありそうな情報を選択して表示するサービスのこと。
http://e-words.jp/w/E383ACE382B3E383A1E383B3E38389.html