php - PHP在重定向时丢失PHPSESSID cookie中的会话ID
问题描述
嘿伙计们,我正在开发一个Codeigniter 3.1.11
与之集成的项目,Sentinel 2.0.8
但我遇到了一个我无法解决的问题!
每当我在回调中重定向到外部页面(支付网关)时,randomly
我就失去了会话。我正在调试,我意识到已经在服务器上创建了一个新会话,而前一个会话已经存在,我提到新会话设置在我的 PHPSESSID cookie 上。PHPSESSID
如果我将cookie的值更改为前一个,它会再次显示登录。
我的问题是为什么它会在前一个会话存在时创建一个新会话,以及为什么它不重新加载前一个会话。这是从支付网关返回时调用的代码部分:
empty(session_id()) ? session_start() : '';
我正在运行LEMP Lando environment
.
解决方案
好的,我发现了问题,由于版本 80+ 更新,这实际上只发生在 Google Chrome 中。Google 更新了 SameSite cookie 的设置,这在我的情况下是支付网关的第三部分(跨域)的回调中导致了此问题。
为了能够解决这个问题,有基于 PHP 版本和您的网络服务器的可用解决方案。
这是 PHP 的示例: https ://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md
希望这可以帮助!因为它让我失去了三天的时间!
推荐阅读
- google-apps-script - 在 Appscript 中复制带有条件的值
- python - Python解析API响应Json主体嵌套数据
- visual-studio-code - 如何防止 vscode 在“最近”列表中列出单个工作区?
- swift - 对象映射失败但有响应
- visual-studio - Visual Studio 中的 Unity 不兼容
- javascript - 解析 json 字符串,其中数字有逗号而不是点
- tsql - 在 dbContext.Entity.FromSqlRaw() 中使用 CTE
- kubernetes - Kubernetes 成功显示 Cron 作业,但未获得所需结果
- flutter - 颤振下拉菜单
不是“字符串”类型的子类型 - python - Python SMTP 更改名称(欺骗)