使 cookie 跨子域持久化

make cookie persist across subdomain

我设置了一个cookie:

<script>
  document.cookie="cid1={{utm_campaign}}; path=/;"
</script>

{{}}是一个宏,是Google-Tag-Manager语法,请忽略。

只要有人使用如下标签登陆 example.com,就会触发上面的脚本:example.com/?utm_medium=test&utm_source=bla&utm_campaign=富。我对其进行了测试,果然,当我使用这些参数登陆主页时,cookie 已设置。

但是访问者可以移动到子域 dogs.example.com。当我查看控制台时,cookie cid1 已不存在。

除了将路径设置为“/”以便 cookie 跨越子域之外,在创建 cookie 时是否可以更改其他设置?

域应该类似于 .example.com 这样 *.example.com 就可以访问它

var website_host = window.location.hostname.replace('www.', '');
document.cookie = "cid1={{utm_campaign}}; path=/;domain=."+website_host 

// to be something like this"cid1={{utm_campaign}}; path=/;domain=.example.com"

您为此缺少域参数。将域设置为 .example.com 以使其可从 .example.com.

中的所有页面访问
<script>
  document.cookie="cid1={{utm_campaign}}; path=/; domain=.example.com"
</script>

此处重复:setting cross-subdomain cookie with javascript

;domain=domain (e.g., 'example.com', '.example.com' (includes all subdomains), 'subdomain.example.com') If not specified, defaults to the host portion of the current document location.

完整文档:https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie