cookieはdomainに.example.com
とするとサブドメイン以下共有されます。
railsはconfig/initializers/session_store.rbで
AppName::Application.config.session_store :cookie_store, key: '_AppName_session', domain: :all
とするとリクエストからドメインを取得し、.example.com
の形でcookieに設定してくれます。
ただ、問題はlocalhostです。
どうもcookieの仕様っぽいのですが、domainはsubdomain.domainname.domain
の形しか受け付けてくれません。
つまり、railsのdomain: :all
だと、.localhost
になってしまい、うまくいきません。
VirtualHostでsubdomain.domainname.domain
の形になるようUrlRewritingしてもいいですが、前回同様プロキシでやってしまいます。
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*.localhost.dev")) {
return "PROXY localhost:3000";
}
if (shExpMatch(host, "localhost.dev")) {
return "PROXY localhost:3000";
}
return "DIRECT";
}
ここでは*.localhost.dev
を受け付けてますが、もちろんdevじゃなくても良いです。
これで晴れてlocalhostでも本番環境でもそのままにサブドメイン以下のcookieが共有されます。
ログイン情報とかを共有しないといけない時にはこれを、
逆にサブドメインごとでデータを区切りたい時はWebStorageを使うと便利です。
(WebStorageはサブドメイン以下の共有ができない仕様になってます)