在一个域上创build一个JavaScript Cookie,并通过子域读取它

以下是在用户计算机上写入12个月的JavaScript Cookie。

在我们的主域名(如example.com上设置cookie后,如果用户访问像test.example.com这样的子域名,我们需要继续在我们的“testing”子域中标识用户的活动。

但是使用当前的代码,只要他们离开www.example.com并访问test.example.com ,他们就不再被标记为“HelloWorld”。

任何人都可以帮助我的代码,允许Cookie跨子域读取?

 <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上设置domainpath属性,如:

 <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= /将使cookie在整个指定的域(即.example.com )中可用。

 document.cookie = "testCookie=cookieval; domain=." + location.hostname.split('.').reverse()[1] + "." + location.hostname.split('.').reverse()[0] + '; path=/" 

这是一个通用的解决scheme,它从位置对象获取根域并设置cookie。 倒退是因为你不知道你有多less个子域名。

您也可以使用MDN JavaScript Cookie框架并执行以下操作:

 docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');