以下は、ユーザーのコンピューターに12か月間書き込まれるJavaScript Cookieです。
example.com
などのメインドメインにCookieを設定した後、ユーザーがtest.example.com
などのサブドメインにアクセスした場合、「テスト」サブドメイン全体でユーザーのアクティビティを特定し続ける必要があります。
しかし、現在のコードでは、www.example.com
を離れてtest.example.com
にアクセスするとすぐに、「HelloWorld」のフラグがなくなります。
誰かが私のドメインでクッキーをサブドメイン間で読み取れるようにするのを手伝ってくれるでしょうか?
<script type="text/javascript">
var cookieName = 'HelloWorld';
var cookieValue = 'HelloWorld';
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate;
</script>
Cookieのdomain
およびpath
属性を次のように設定するだけです。
<script type="text/javascript">
var cookieName = 'HelloWorld';
var cookieValue = 'HelloWorld';
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate
+ ";domain=.example.com;path=/";
</script>
あなたが欲しい:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
RFC 2109 に従って、すべてのサブドメインでCookieを使用できるようにするには、ドメインの前に.
を配置する必要があります。
Path = /を設定すると、指定したドメイン全体(別名.example.com
)内でCookieが使用可能になります。
これが実際の例です:
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + "; path=/"
これは、ロケーションオブジェクトからルートドメインを取得し、Cookieを設定する一般的なソリューションです。逆になっているのは、サブドメインがいくつあるかわからないためです。
MDN JavaScript Cookie Framework を使用して、以下を実行することもできます。
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');