gpt4 book ai didi

javascript - 子域读取和删除主域cookie

转载 作者:行者123 更新时间:2023-11-30 14:26:21 27 4
gpt4 key购买 nike

我需要从我的主域设置一个 cookie,读取然后从子域中删除 cookie。但我将来可能还需要在域上再次设置该 cookie,并稍后在子域上读取它。基本上,是一种单向通信流。我不能让主域处理取消设置 cookie,因为用户访问主域和子域之间可能有几个月的时间。

我在我的域上设置了一个 cookie,如下所示:

document.cookie = "mycookie=testcookie;domain=example.com;max-age=31536000;";

我在另一个子域上访问它就很好,例如:

document.cookie.replace(/(?:(?:^|.*;\s*)testcookie\s*\=\s*([^;]*).*$)|^.*$/, "$1");

然后我尝试从子域中杀死它:

document.cookie = "mycookie=;domain=example.com;max-age=0;";

那是行不通的。 Cookie 仍然设置。

但是,像这样设置它会清除它:

document.cookie = "mycookie=;domain=example.com;max-age=31536000;";

它现在在从子域请求时返回 ""

但是...如果我回到域重新设置,我可以看到它已经设置,子域仍然返回 ""

是否有某种……我缺少的 cookie 层次结构?我不确定这是如何表现的或如何克服它。

最佳答案

为了启用此功能,您必须在根域之前放置一个句点 .,如下所示:.example.com 这很重要,因为 cookie 的方式标准化设置。这种格式应该与大多数现代浏览器兼容。

此外,跨不同子域访问或修改cookie时,路径必须相同。最简单的方法是只使用域的根路径 /。例如,如果您从 sub1.example.com/page1 设置 cookie 并尝试从 sub2.example.com/page2 访问它,即使您设置了域作为 .example.com 您还必须设置 path=/ 以便从其他子域上的任何路径访问和修改它。

最终:

document.cookie = "mycookie=testcookie;domain=.example.com;path=/;max-age=31536000";

将使您能够设置它并且

document.cookie = "mycookie=;domain=.example.com;path=/;max-age=0";

会让你删除它。

关于javascript - 子域读取和删除主域cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51883612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com