会话仅在 Chrome Bigcommerce PHP 应用程序中不起作用

Session is not working in Chrome only Bigcommerce PHP app

我很担心,我刚刚发现我的 PHP 会话在 Chrome 中不起作用。实际上,我正在开发使用 Silex 框架 (SesionServiceProvider) 在我的应用程序中存储会话的 Bigcommerce 应用程序。它在 Firefox 中运行良好,但在 Chrome.

中运行不正常

当页面第一次加载时,它显示会话值但是当我发送任何 AJAX 请求或使用 POST 请求或任何从主页发送数据的页面请求提交任何表单时,会话变量被破坏,但是当我重新启动会话时,它显示会话已经启动,没有会话变量。

此外,我读了这个https://blog.heroku.com/chrome-changes-samesite-cookie 我需要为我的解决方案设置相同的站点。但是我找不到如何在我的应用程序会话中设置 samesite 属性。

我使用下面的代码来设置我的应用会话

$app['session']->set('sessionname','sessionvalue');

我试过同一个网站,

$app['session']->set('sessionname','sessionvalue',['samesite' => 'None', 'secure' => true]);

但不工作。

我终于找到了解决方案,想写在这里,只是因为它可能会对某人有所帮助。

我在服务器上的 .htaccess 文件中添加了一个条件,

<If "%{HTTP_USER_AGENT} !~ /(iPhone; CPU iPhone OS 1[0-2]|iPad; CPU OS 1[0-2]|iPod touch; CPU iPhone OS 1[0-2]|Macintosh; Intel Mac OS X.*Version\x2F1[0-2].*Safari|Macintosh;.*Mac OS X 10_14.* AppleWebKit.*Version\x2F1[0-3].*Safari)/i">Header always edit Set-Cookie (.*) "; SameSite=None; Secure"</If>