会话无法在仅限Chrome的Bigcommerce PHP应用中运行

问题描述

我很担心,我只是发现我的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 (.*) "$1; SameSite=None; Secure"</If>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...