我在Internet上进行搜索,试图找到将SameSite设置为无的正确方法。
我使用的是PHP 7.4.2(CLI),我还需要使用PHP 7.3及更低版本。
这些是我到目前为止尝试过的
//1
setcookie($name, $value, ['secure' => true, 'samesite' => 'None']);
//2
setcookie($name, $value, [
'expires' => $expire,
'path' => '',
'domain' => '',
'secure' => true,
'httponly' => false,
'samesite' => 'None',
]);
顺便说一句,这个作品
setcookie($name, $value, ['samesite' => 'Lax']);
但这不是
setcookie($name."test4", $value, ['secure' => true, 'samesite' => 'Lax']);
这不是我的浏览器的问题,就像类似的建议所述。我没有收到任何错误或浏览器警告。这段代码什么都不做。
正如我提到的在docker上使用PHP 7.4和Apache进行工作。
答案 0 :(得分:0)
原来我的语法还可以。我错过了当我将“安全”设置为“真”(作为同一地点的双重产物)的观点。
我刚刚了解到,当您在cookie上将secure设置为true时,这意味着它只会在存在安全连接的情况下设置该cookie。即该网站是否具有HTTPS。
在本地docker环境中工作,我没有HTTPS,因此这就是为什么cookie根本没有设置,没有警告或抛出错误的原因。
解决方案是获取HTTPS,我在HTTPS上安装了一个测试服务器,并在其中上传了我的应用程序,一切顺利。