gpt4 book ai didi

包含 samesite 参数的 PHP setcookie 函数不起作用

转载 作者:行者123 更新时间:2023-12-05 04:42:50 26 4
gpt4 key购买 nike

我有一个使用这些参数运行的完全可用的 setcookie() php 函数...

<?php

setcookie(
'_siteauth',
Crypt::encrypt(site()->password),
time() + 86400,
'/',
);

?>

上面的代码每次都设置一个 cookie,没有问题!

但是一旦我尝试使用 samesite 选项,cookie 就永远不会设置...这是一个问题。

我没有在 iFrame 中运行它。我正在使用 dockers wordpress 图像在本地对此进行测试,我看不出这是一个问题。

一开始在网上看了很多之后,我认为这可能是 PHP 版本冲突,但是在 PHP 7.3.0 之前/之后的测试中都没有成功。

看完https://www.php.net/manual/en/function.setcookie.php

...它表示可以将选项设置为关联数组,包括expirespathdomainsecurehttponlysamesite,但每次我尝试此 php setcookie 方法时,它都没有设置。

这是我在本地转储的 $_SERVER['HTTP_HOST'] 结果...

demo.local.mydomain.com

以下是我所有的本地测试代码尝试,使用 $_SERVER['HTTP_HOST'] 作为域...

<?php

setcookie(
'_siteauth',
Crypt::encrypt(site()->password),
[
'expires' => time() + 86400,
'path' => '/',
'domain' => $_SERVER['HTTP_HOST'],
'samesite' => 'None',
'secure' => false,
'httponly' => false
]
);

?>
<?php

setcookie(
'_siteauth',
Crypt::encrypt(site()->password),
time() + 86400,
'/; SameSite=none'
);

?>
<?php

setcookie(
'_siteauth',
Crypt::encrypt(site()->password),
[
'expires' => time() + 86400,
'path' => '/',
'domain' => $_SERVER['HTTP_HOST'],
'secure' => false,
'httponly' => false,
'samesite' => 'None'
]
);

?>

并且这些代码示例在执行时都没有保存 _siteauth cookie。

我已经尝试了 php 版本 setcookie() 的所有变体,包括 samesite 键和值,但没有保存任何 cookie。

我更改之前的 setcookie() 脚本的原因是 2020 年初 chrome 中的 iframe cookie 策略发生了变化,默认为 samesite Lax。所以我需要在设置 cookie 时强制 samesite None

https://web.dev/samesite-cookies-explained/
https://web.dev/samesite-cookie-recipes/

如果有人能看到我哪里出错了,帮助会很棒。

最佳答案

当您使用 SameSite=None 设置 cookie 时,它​​将被(浏览器)阻止,除非它也具有 Secure,后者在中被省略/设置为 false代码片段。

setcookie(
'_siteauth',
Crypt::encrypt(site()->password),
[
'expires' => time() + 86400,
'path' => '/',
'domain' => $_SERVER['HTTP_HOST'],
'samesite' => 'None',
'secure' => true,
]
);

关于包含 samesite 参数的 PHP setcookie 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69783387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com