【问题标题】:Reading Javascript Cookies from a subdomain从子域读取 Javascript Cookie
【发布时间】:2021-05-18 13:48:58
【问题描述】:

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

我很确定你可以向上阅读——从子域到 fqdn——但你不能向下阅读——fqdn 到子域。

谢谢!

【问题讨论】:

标签: javascript cookies


【解决方案1】:

test.com example.com 设置 cookie 时,请确保将 cookie 域指定为 ".test.com" ".example.com" .

例如:

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

【讨论】:

  • Ates,就是这样,我不想做任何设置。我只想读书。所有设置都是从​​另一个应用程序在服务器端完成的。
  • Ates 是说,除非 cookie 设置正确,域前缀为句点,否则您将无法从子域读取 cookie
  • 那么你是说如果设置正确,那么 document.cookie 会隐式读取 .a.test.com 以及 .test.com 中的所有 cookie?
  • 感谢 Gareth 插话并详细说明我相当简洁的答案。
  • 不适合我。使用 document.cookie 从 sub.domain.com 中无法看到使用 .domain.com 设置的 cookie。 '。'前缀肯定是 100% 存在的。
【解决方案2】:

我需要使用 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。反之亦然。

在子域的关闭&lt;/body&gt;标签之前,这是我用来读取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>

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 2012-06-25
    • 2011-08-06
    • 2015-07-13
    • 2017-10-25
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多