从子域读取Javascript Cookie

时间:2009-11-06 17:02:49

标签: javascript cookies

在子域名 - a.test.com上 - 我正在尝试阅读.test.com上设置的Cookie。如果我在JS中使用document.cookie,我所得到的只是来自a.test.com的cookie。从.test.com读取cookie的语法或途径是什么?

我很确定你可以阅读 - 从子域到fqdn - 但你不能读下来 - fqdn到子域。

谢谢!

2 个答案:

答案 0 :(得分:9)

test.com example.com上设置cookie时,请确保将cookie域指定为“。test.com”“。example.com”

例如:

your_key_name=your_key_value;domain=.example.com;expires=...

答案 1 :(得分:1)

我需要使用 cookie 将 Shopify 变量传递给子域,并且我能够在结束 </body> 标记之前添加此 Javascript:

<script>
  var nowCart = new Date();
  var timeCart = nowCart.getTime();
  var expireTimeCart = timeCart + 1000*36000;
  nowCart.setTime(expireTimeCart); // " + nowCart.toUTCString() + "
  document.cookie = "_count={{ cart.item_count }};domain=.example.com;expires=;SameSite=none;Secure=true";
</script>

在域之前使用 . 允许从域以及任何其他子域读取 cookie。反之亦然。

在子域的关闭 </body> 标记之前,这是我用来读取 cookie 并对其进行处理的 Javascript:

<script>
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
var cookie_name = getCookie('_count');
var cartCount = document.getElementById('_count');
cartCount.innerHTML=cookie_name;
</script>