从Gmail点击链接时会话和cookie丢失!非常Bizzzare



简介当我点击来自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将仅在第一方上下文中发送,而不会与第三方网站发起的请求一起发送。

最新更新