Google Chromeで想定通りCookieが消えてくれなかった
このエントリを記載した際に使用していたブラウザのバージョンは以下の通り。
ブラウザ | ブラウザバージョン | OS |
---|---|---|
Chromium | 45.0.2454.101 Ubuntu 15.10 (64-bit) | Ubuntu15.10 |
Firefox | 42.0 | Ubuntu15.10 |
Google Chrome | (未確認 あとで追記) | Windows10 |
背景
はてなブログへログインするためのcookie受け入れ設定をしようと、オムニバー(URLバー)のクッキーマークをポチポチとやってこんな設定にしました。
ホスト名のパターン | 動作 |
---|---|
www.hatena.ne.jp | 終了時に消去 |
blog.hatena.ne.jp | 終了時に消去 |
yukihane.hatenablog.com | 終了時に消去 |
この設定でログインとblogエントリの編集が行えるようになりましたので安心していたのですが、ブラウザを一旦終了して起動しなおしてもログイン状態が継続していることに気づきました。
はてな関係のcookieは終了時に全て削除される(のでログアウト状態にもどる)想定だったので、なにがおかしいのだろう?と起動直後のcookieを見てみました。
すると、設定で指定した www.hatena.ne.jp
等(以降、subdomain cookieと呼称)は確かに消えているのですが、 hatena.ne.jp
や hatenablog.com
といったサブドメインを削ったcookie(以降、rootdomain cookieと呼称)が残ったままになっていました。
ここで、何が想定と異なっていたのかをまとめると、
の2点になります。
問題
rootdomain cookieが受け入れられている
同様の設定をFirefoxでも行ってみたところ、こちらでもrootdomain cookieは受け入れられていました。
どうやらこの挙動はどうやら標準的なもののようです。
ググってみたところ、以下のようなページが見つかりました。
RFC2965(とその後継RFC6265)で、
> x.y.z.com can set a cookie domain to itself or parents - x.y.z.com, y.z.com, z.com
となるようなことが書かれているようで、今回のブラウザ受け入れ設定もこれに準じているのかな、と。
準じているのが良いのか悪いのかで言うと、悪い気がしますが、私のようにホワイトリスト的に使わないのであれば問題ないのかもしれません。
終了時に受け入れたcookieが削除されない
これはChromeとFirefoxで挙動が異なり、Firefoxではrootdomain cookieも削除されていました。つまり、次回起動時には想定通りログアウト状態になっています。
ここでふと気になったのですが、 xxx.example.com
は終了時削除、 yyy.example.com
はずっと保持する、という設定にしていた場合、 example.com
はどうなっている/どうなっているべきなんでしょうね。 xxx
由来のものか yyy
由来のものか区別がつくもんなんでしょうか…?
そんなわけで、一概にChromeのバグだ、ということも出来ないのかも。
結論
rootdomainまで辿って設定が有効になる、かつ消去したいのであれば明示的に記述しなければならないのであれば、結局は次のような設定にする必要があるということになります。
ホスト名のパターン | 動作 |
---|---|
blog.hatena.ne.jp | 終了時に消去 |
www.hatena.ne.jp | 終了時に消去 |
hatena.ne.jp | 終了時に消去 |
yukihane.hatenablog.com | 終了時に消去 |
hatenablog.com | 終了時に消去 |
他のサイトでも同じようなことなんてやってられないしどうしよう、と思案したところ、もっと良い方法があることに気づきました。
次回に続く。