Play framework で Set-Cookie するときに domain 属性を指定する方法

Play framework 1.2.x の場合 HTTPではレスポンスヘッダの Set-Cookie の domain属性 でクッキーが参照可能となるドメインを指定できる。例えばHTTPのレスポンスヘッダに Set-Cookie: SESSION=thisissessionid; path=/; domain=example.com のような行があれば SESSION=thisissessionid というデータは example.com の中でのみ有効となる。もしもクッキーの値を example.com のサブドメインでも使いたければ domain=example.com を domain=.example.com と変更すればよい。 Play framework 1.2.x では application.conf に application.defaultCookieDomain=.example.com という一行を加えることでクッキーの有効ドメインを変更することができる。 Play framework 2.0.x の場合 実は Play framework 2.0.x 系ではアプリケーションレベルでクッキーが参照可能なドメインを設定する手段が用意されていない。Play framework 2.0.4 の framework/src/play/src/main/scala/play/api/mvc/Http.scala で encodeAsCookie() は次のように定義されている。 /** * Encodes the data as a `Cookie`. */ def encodeAsCookie(data: T): Cookie = { val cookie = encode(serialize(data)) Cookie(COOKIE_NAME, cookie, maxAge, "/", None, secure, httpOnly) } ここで Cookie の第五引数が None で固定値になってしまっているのが問題である。これは Play framework 2. [Read More]

Google Chromeでサードパーティクッキーを無効にする手順

新規にブラウザをインストールするときにサードパーティクッキーを無効にするポリシを取っているけれど、いつもどこから設定するのか忘れてしまうのでメモを残す。今回は新規にブラウザをインストールしたわけではないけれど、Instapaperのブックマークレットがサードパーティクッキーを使うので、www.instapaper.comだけサードパーティクッキーを許可する例外ドメインとして登録した。

なお、当方の環境はMac版のGoogle Chrome(英語版)で、バージョンは"Version 23.0.1271.101"であった。

  • “chrome://chrome/settings/” をブラウザのアドレスバーへ入力する
  • “Show advanced settings…” をクリックする
  • Privacy メニュー内の “Content settings…” ボタンをクリックする
  • “Block third-party cookies and site data” のチェックを入れる

今回の僕の場合は更に:

  • “Manage exceptions…” をクリックする
  • “Hostname pattern” に www.instapaper.com を入力して “OK” ボタンを押す