在域上创建 JavaScript Cookie 并跨子域读取它

2022-08-30 05:17:38

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

在主域上设置 Cookie 后,如果用户访问这样的子域,我们需要继续在我们的“测试”子域中识别用户的活动。example.comtest.example.com

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

任何人都可以帮助我的代码,以允许跨子域读取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>

答案 1

只需在 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>

答案 2

你想要:

document.cookie = cookieName +"=" + cookieValue + ";domain=.example.com;path=/;expires=" + myDate;

根据RFC 2109,要使cookie可用于所有子域,您必须在域前面放置一个。.

设置 path=/ 将使 cookie 在整个指定域(又名 )中可用。.example.com