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.1.x では解消されているが、このバージョンはまだRC版である。ステーブル版へのバックポートを望む声もある。僕もぜひバックポートして欲しいと思っている。
追記 (2013年02月06日 14:56 PST)
Play framework 2.1.0が安定版になったので、今から2.0.xを積極的に使う理由はないと思う。