【问题标题】:Create cookie with samesite: "Lax"使用相同站点创建 cookie:“Lax”
【发布时间】:2021-06-19 11:48:46
【问题描述】:

我正在创建一个简单的 cookie,并希望将 sameSite 设置为“Lax..但是,每当我在我的功能中设置它时,sameSite 实际上并没有被设置。

我知道这需要与secure...一起设置?我哪里错了?

function setCookie(name, value, expirydays) {
 var d = new Date();
 d.setTime(d.getTime() + (expirydays*24*60*60*1000));
 var expires = "expires="+ d.toUTCString();
 document.cookie = name + "=" + value + "" + expires + "sameSite=Lax; Secure";
}

seCookie("ejOptExp", "Fkh3wu6USS-7HjQMGoRnDw.2", 7);

我正在使用 EditThisCookie chrome 扩展程序来查看我的 cookie 数据。看起来samesite 总是设置为none

谢谢。

【问题讨论】:

  • 从我读到的,"Lax" is the new default?不确定,如果它没有明确设置它是一个错误,或者是预期的行为。
  • @ASDFGerte 非常感谢!我也读过这个,但也读了很多其他答案/解决方案,非常困惑

标签: javascript cookies setcookie samesite


【解决方案1】:

我哪里出错了?

这里的问题是您的 cookie 的属性之间没有分号。

如果我将 console.log(name + "=" + value + "" + expires + "sameSite=Lax; Secure"); 添加到您的函数并运行它,我会看到

ejOptExp=Fkh3wu6USS-7HjQMGoRnDw.2expires=2021 年 4 月 5 日星期一 17:20:08 GMTsameSite=Lax;安全

这不是你想要的。

添加一些分号,这将解决您的问题。 document.cookie = name + "=" + value + "; " + expires + "; " + "sameSite=Lax; Secure";

我知道这需要与安全...一起设置?

SameSite=Lax 不需要Secure,只有 SameSite=None 需要。但无论如何,将您的 cookie 标记为 Secure 仍然是一种好习惯!

而且看起来samesite 总是设置为none?

那里的空字段表示浏览器无法识别您的 cookie 的任何 SameSite 属性(因为缺少分号),因此该属性未指定。正如 ASDFGerte 所提到的,当未指定 SameSite 时,cookie 在大多数浏览器中将被视为“Lax”。

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 2021-06-28
    • 2020-07-13
    • 2021-01-08
    • 1970-01-01
    • 2020-06-07
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多