简介当我点击来自gmail的链接时,cookie和会话就会丢失。但是,如果我复制gmail中的链接并将其粘贴到空白标签中,cookie将被保留!
<长细节/strong>在www.mydomain.com,我使用以下选项设置cookie和PHP会话:
$myCookieSessionOptions = array(
'lifetime' => (time() + 60*60*24*363),
'path' => "/",
'domain' => "." . "mydomain.com",
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
);
session_set_cookie_params ( $myCookieSessionOptions ) ;
session_name("mySessionName");
session_start();
上面是login.php页面和另一个页面的代码。例如,在login.php上,当我登录并设置会话等时,session_id()显示为c7a9c180b767e889ad0161dc613aec41。
当我访问另一个页面。php在一个空白的选项卡和一些GET参数(和我的代码不做会话),我得到相同的session_id()。
但是,当另一个page.php的相同链接(以及get参数)在电子邮件中发送时,然后我得到一个全新的session_id: 3fc7f8749ba6eb46ddd35a0db3a17589例如。
在另一个选项卡中,有login.php,会话丢失,因为新会话被创建,显然
问题是这种行为是否正常?显然,这不仅仅是针对gmail。从"anyotherdomain.com",当我点击链接到我的域名,没有发送cookies !
非常奇怪!有关于这种行为的文档吗?
任何帮助都将不胜感激
session auto start为Off。检查phpinfo
在上面的代码之前没有对会话
做任何事情
感谢拉詹
我明白了!如果我有samesite="none",问题就消失了
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
并测试了它&
按照doc:
严格cookie将仅在第一方上下文中发送,而不会与第三方网站发起的请求一起发送。