无法设置 SameSite=None PHP 7.4 无错误无警告

Unable to set SameSite=None PHP 7.4 no error no warning

我在 Internet 上搜索过,试图找到将 SameSite 设置为 none 的正确方法。

我在 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。

原来我的语法没问题。我错过了一点,当我将 'secure' 设置为 'true'(作为 samesite none 的 bi-product)。

我刚刚了解到,当您将 cookie 的 secure 设置为 true 时,这意味着它只会在存在安全连接时设置该 cookie。即如果网站有 HTTPS。

在本地主机 docker 环境中工作我没有 HTTPS,所以这就是为什么 cookie 根本没有设置,没有警告,也没有抛出错误。

解决方案是获取 HTTPS,我有一个使用 HTTPS 的测试服务器,我在其中上传了我的应用程序并且一切正常。