下面是一个在用户计算机上写了12个月的JavaScript cookie。
在我们的主域(如example.com
)上设置cookie之后,如果用户访问像test.example.com
这样的子域,我们需要继续识别用户在“测试”子域中的活动。
但是在当前的代码中,一旦他们离开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>
发布于 2011-04-15 09:17:40
只需在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>
发布于 2011-04-15 09:17:40
您需要:
document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;
根据RFC 2109,要使cookie可用于所有子域,您必须在您的域前面放置一个.
。
设置路径=/将使cookie在整个指定的域(也称为.example.com
)内可用。
发布于 2016-02-13 00:42:01
下面是一个有效的示例:
document.cookie = "testCookie=cookieval; domain=." +
location.hostname.split('.').reverse()[1] + "." +
location.hostname.split('.').reverse()[0] + "; path=/"
这是一个通用的解决方案,它从location对象中获取根域并设置cookie。这是因为你不知道你有多少个子域。
https://stackoverflow.com/questions/5671451
复制相似问题