以下是在用户计算机上写入12个月的JavaScript Cookie。
我们在example.com
等主域上设置Cookie后,如果用户访问test.example.com
这样的子域,我们需要继续在“test”子域中识别用户的活动
但是使用当前代码,只要他们离开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>
答案 0 :(得分:187)
只需在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>
答案 1 :(得分:26)
你想:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
根据RFC 2109,要让所有子域都可以使用Cookie,您必须在域名前添加.
。
设置路径= /将使cookie在整个指定域中可用(又名.example.com
)。
答案 2 :(得分:3)
这是一个有效的例子:
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + "; path=/"
这是一个通用解决方案,它从位置对象获取根域并设置cookie。逆转是因为你不知道你有多少个子域名。
答案 3 :(得分:1)
您也可以使用MDN JavaScript Cookie Framework并执行:
docCookies.setItem('HelloWorld', 'HelloWorld', myDate, '/', 'example.com');