问题描述
几周以来,我们注意到,结帐后返回的客户偶尔会丢失其登录状态。我们发现这种情况只发生在 88 左右的 chrome 版本上。我发现的是,通常的检查
isset(WC()->session->chosen_payment_method)
使用 chrome 时返回 false,使用 firefox 或其他浏览器时返回 true(即使 edge 和 safari 也按预期工作)
有谁知道如何“对抗”这个?
到目前为止,我一直试图找出在用户从 3rd 方站点重定向回来后如何通过 url 参数传递 sessionid 以重建 cookie。但并不是很幸运,这样做甚至似乎存在安全风险,因为这会导致中间人攻击。
谢谢!
解决方法
如果这确实与 SameSite
cookie 有关,那么就像 @CBroe 建议的那样,该问题应该至少从一月份就出现了。
Chromium 人员发表了一篇关于潜在问题以及如何检测和修复这些问题的文章。您可以在此处查看Tips for testing and debugging SameSite-by-default and “SameSite=None; Secure” cookies。
如果确实链接到 SameSite
cookie,这里有一些资源可以开始修复。
- SameSite cookie 食谱@https://web.dev/samesite-cookie-recipes/
- SameSite 示例@https://github.com/GoogleChromeLabs/samesite-examples
但再一次,因为它只影响 Chromium 用户,所以我怀疑它与 SameSite
cookie 有关。