静态网站的Cookie:Cookie将很快被拒绝(SameSite)问题

时间:2020-07-22 19:44:43

标签: javascript cookies github-pages samesite static-pages

我正在创建一个静态网站(将在github页面上发布),并希望使用Cookie为用户存储网站状态。但是在设置Cookie时出现以下错误:

Cookie“ buttonState”将很快被拒绝,因为它的“ sameSite”属性设置为“ none”或无效值,而没有“ secure”属性。要了解有关“ sameSite”属性的更多信息,请阅读https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

我一直在使用以下js代码设置cookie:

function set_cookies(jsonObj={},expires="",path="/"){
for(var key in jsonObj){
    var temp = (key+"="+jsonObj[key]+";");
    if(expires!=="")
        temp += ("expires="+expires+";");
    if(path!=="")
        temp+= ("path="+path);
    console.log(temp);
    document.cookie = temp;
  }
}
set_cookies({"buttonState":"compile");

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我也一直在我们网站的Cookie上处理此问题。您需要在临时变量后面附加";sameSite=Lax"。那就是浏览器现在期望看到的。 Mozilla文档说,根据您提供的链接,Lax的定义是:

“ Cookie允许与顶级导航一起发送,并且将 与第三方网站发起的GET请求一起发送。这是 现代浏览器中的默认值。”

然后,在“无”下显示:

“以前没有默认值,但是最近的浏览器版本 放宽默认值以对某些内容具有合理的防御能力 类跨站点请求伪造(CSRF)攻击。”

后来,在其中一个示例中,它表示:

“尽管您可以依靠现代浏览器来应用SameSite = Lax 自动,您应该明确指定它以清楚 传达您的意图,即SameSite政策适用于您的cookie。 这也将改善跨浏览器的体验,因为并非所有 他们默认为宽松。”