我正在创建一个静态网站(将在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");
我该如何解决这个问题?
答案 0 :(得分:2)
我也一直在我们网站的Cookie上处理此问题。您需要在临时变量后面附加";sameSite=Lax"
。那就是浏览器现在期望看到的。 Mozilla文档说,根据您提供的链接,Lax的定义是:
“ Cookie允许与顶级导航一起发送,并且将 与第三方网站发起的GET请求一起发送。这是 现代浏览器中的默认值。”
然后,在“无”下显示:
“以前没有默认值,但是最近的浏览器版本 放宽默认值以对某些内容具有合理的防御能力 类跨站点请求伪造(CSRF)攻击。”
后来,在其中一个示例中,它表示:
“尽管您可以依靠现代浏览器来应用SameSite = Lax 自动,您应该明确指定它以清楚 传达您的意图,即SameSite政策适用于您的cookie。 这也将改善跨浏览器的体验,因为并非所有 他们默认为宽松。”