gpt4 book ai didi

javascript - 在 Javascript 中设置 cookie (Angular) : Issues with semicolon

转载 作者:行者123 更新时间:2023-11-28 00:41:58 27 4
gpt4 key购买 nike

当我遇到一个看似奇怪的问题时,我试图在 Angular 中使用 TypeScript 设置 cookie。

我只是想在 cookie 中存储一些信息供以后使用(仅用于测试目的)。我所做的就是执行这一行:

document.cookie = "token=" + value + "; expires=" + date + ";";

如果我之后执行 document.cookie 但是结果如下:

"Cookie: token=_value_"

我希望结果是:

"Cookie: token=_value_; expires=_date_;"

它只是删除字符串中分号后的所有内容。如果我将它们更改为逗号,则所有内容都会正确连接。那么分号一定有问题吗?但是在每个 cookie 的“教程”中,他们都使用这种语法。我尝试了很多东西,比如编码分号值等等。我确定对此有一个简单的答案?

最佳答案

当你声明一个 cookie 时,它​​是这样的形式:

document.cookie = "key=value; property_1; property_2; ... property_n";

基于 this MDN documentation你一次只能写一个新的 cookie。如果你想声明两个 cookie,你应该做两个任务:

document.cookie = "key=value; property_1; property_2; ... property_n";
document.cookie = "key2=value2; property_1; property_2; ... property_n";

现在,为什么在显示 document.cookie 时看不到属性?

这是正常的行为。 document.cookie 实际上是一个访问器属性。这意味着当您使用 document.cookie 时,JavaScript 将使用 getter 和 setter。你在代码中写的不会是你以后读到的,因为它会分别调用一个 setter 来分配一个 cookie document.cookie = ... 和一个 getter 来显示 document。 cookies 一切都由 JavaScript 解释器在内部管理。

在您的情况下,您要声明具有值和到期日期的一个 cookie。分号 ; 用于指定您正在创建的 cookie 的其他属性。

document.cookie = "token=" + value + "; expires=" + date + ";";

您的示例使用名称 token、值 value 和属性 expires 声明一个新的 cookie,日期包含在 >日期 变量。它将调用内部 JavaScript setter 来设置此 cookie。

现在,如果您使用 document.cookie 显示所有 cookie,您将只会获得每个 cookie 的名称和值,而不是其他属性,因为 expires路径安全。它由内部的 getter 调用管理,该调用选择仅显示每个 cookie 的 key=value 对。

this stack overflow answer 中所述您无法通过 document.cookie 访问其他属性。

关于javascript - 在 Javascript 中设置 cookie (Angular) : Issues with semicolon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924281/

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