我正在创建一个静态网站(将发布在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");我该如何处理这个问题?
发布于 2020-07-30 19:38:13
我也在我们的网站上处理过这件事。您需要将";sameSite=Lax"附加到临时变量中。这就是浏览器现在希望看到的。根据您提供的链接,Mozilla文档说,Lax的定义是:
"Cookies“允许与顶级导航一起发送,并将与第三方网站发起的GET请求一起发送。这是现代浏览器中的默认值。
后来,在“无”下,它说:
"None“曾经是默认值,但最近的浏览器版本使得缺省值变得宽松,从而对某些类型的跨站点请求伪造(CSRF)攻击具有相当强的防御能力。
然后,在其中一个例子中,它说:
“虽然您可以依靠现代浏览器自动应用SameSite=Lax,但是您应该明确地指定它,以清楚地传达您的SameSite策略应用于您的cookie的意图。这也将改善跨浏览器的体验,因为并非所有浏览器都默认为Lax。”
。
https://stackoverflow.com/questions/63042039
复制相似问题