Cookieの消去(削除,クリア)が出来ない件について

僕が昔perlで作ったウェブアプリが有るのですが、Cookie(クッキー)削除のボタンを押してもCookieが残ったままだという報告を受けました。試してみたところ
○Windows2000+IE6.0
○WindowsXP+IE7.0
×Windows2000+Firefox2.0
×WindowsXP+Firefox2.0
という結果でした。
で問題の報告を受けた環境はWindows Vista+IE7.0環境らしい(確認が取れていない)のですが
手元には環境が無いので試すことが出来ませんでした。


Cookieを消去する方法は、Cookieの有効期限に過去の日付指定するというオーソドックスな方法を使っています。
ググって見ると同じように困っている人がいました。
▼おしえて!goo – Cookieがクリアされない
http://oshiete1.goo.ne.jp/qa3186644.html
上記では、charsetの宣言を省くことで問題を解決することが出来たようです。
しかし、結局のところこういう原因がわかりにくい問題に対応するのは大変なのと、今後も別の原因でおこりうる問題なので、僕は上記の記事の中でも触れられているようにCookieの設定値を空にするという方法を取ることにしました。Cookieのセットは出来るのだから、設定値を空にしてしまえば問題解決というわけです。
下記の様に過去の日付を設定しているところを

print “Set-Cookie: $mm=dummy; expires=Thu, 1-Jan-1970 00:00:00 GMT;\n”;

未来の日付にして値を設定しないようにしました。(期限はとりあえず2030年w)

print “Set-Cookie: $mm=; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n”;

とりあえずこれでFirefoxでもうまくCookieのクリア(?)ができる様になりました。

タグ :