我尝试了几次更改,但无法获得解决方案。 如何为samesite = lax / or strict修改此setcookie代码
<a href="" onClick="cookienumberone('COOKIEXYZ','0','-1')">
<button type="button">buttontext</button></a>
<script>
function cookienumberone(){
days=30; // number of days to keep the cookie
myDate = new Date();
myDate.setTime(myDate.getTime()+(days*24*60*60*1000));
document.cookie = 'COOKIEXYZ=0; expires=' + myDate.toGMTString();
}
</script>
编辑:以上解决方案:document.cookie ='COOKIEXYZ = 0; SameSite = Lax; expires ='+ myDate.toGMTString();
和用于登录的cookie,相同的问题:
setcookie("cookie_login",$rs->row["login"],time()+60*60*24*365,"/",str_replace("http://","",surl));
答案 0 :(得分:1)
对于客户端JavaScript,请以与document.cookie
标头相同的格式指定Set-Cookie
。
例如
document.cookie = 'same-site-cookie=foo; SameSite=Lax';
document.cookie = 'cross-site-cookie=bar; SameSite=None; Secure';
对于您看来是PHP的框架,从PHP 7.3.0开始,
setcookie()
方法
在其选项中支持SameSite
属性,并将None
接受为
有效值。
setcookie('same-site-cookie', 'foo', ['samesite' => 'Lax']);
setcookie('cross-site-cookie', 'bar', ['samesite' => 'None', 'secure' => true]);
对于早期版本的PHP,您还可以设置
直接header()
:
header('Set-Cookie: same-site-cookie=foo; SameSite=Lax');
header('Set-Cookie: cross-site-cookie=bar; SameSite=None; Secure');