根据本文中关于https://php.watch/articles/PHP-Samesite-cookies和https://www.php.net/manual/en/session.security.ini.php文档的文章,对于这个新特性,只有两个可能的配置选项,添加在PHP7.3中:
然而,根据Chrome控制台的说法,这需要设置为“无”:
在没有
SameSite
属性的情况下,设置了与位于URL的跨站点资源关联的cookie。它已经被阻止了,因为Chrome现在只提供带有跨站点请求的cookie,如果它们是用SameSite=None
和Secure
设置的。您可以在Application>Storage>Cookies下查看开发工具中的cookie,并在URL和URL上查看更多详细信息。
因为这个,我不能再设置跨站点的曲奇了。解决办法是什么?
发布于 2019-12-30 10:19:02
可以使用ini_set
将值设置为"None“。在使用该函数时,不检查是否支持该值:
ini_set('session.cookie_samesite', 'None');
session_start();
session_set_cookie_params
也可以设置它:
session_set_cookie_params(['samesite' => 'None']);
session_start();
php.ini中支持的bug报告是这里。
正如@虾车在下面的评论中所说的那样,session.cookie_secure
必须是true
才能工作。PHP不需要它,但是浏览器需要它。
发布于 2020-08-26 20:55:15
ini_set('session.cookie_secure', "1"); ini_set('session.cookie_httponly', "1"); ini_set('session.cookie_samesite','None'); session_start();
phpinfo中的PHP7.4samesite
phpinfo中不存在PHP7.2 samesite
$currentCookieParams = session_get_cookie_params();
$cookie_domain= 'your domain';
if (PHP_VERSION_ID >= 70300) {
session_set_cookie_params([
'lifetime' => $currentCookieParams["lifetime"],
'path' => '/',
'domain' => $cookie_domain,
'secure' => "1",
'httponly' => "1",
'samesite' => 'None',
]);
} else {
session_set_cookie_params(
$currentCookieParams["lifetime"],
'/; samesite=None',
$cookie_domain,
"1",
"1"
);
}
session_start();
发布于 2020-04-21 03:38:34
https://stackoverflow.com/questions/59534999
复制相似问题