背景
去年开发的一款应用,在pc和移动端除了华为的手机都能正常的获取cookie, 只有华为手机无法获取cookie. 由于已经到项目尾期,在更换成token很麻烦, 所以选择寻找问题所在.
如何解决
在chrome 80版本中, 默认策略把 SameSite 的值设置为了Lax, 这导致跨域直接失效. 所以需要在后端Cookie 的SameSite的值改为None.
但是当 SameSite =None时, 必须同时启用Secure的属性. 启用Secure,则必须开启HTTPS, 所以解决方法就很简答了.
将 SameSite 改为None, 启用Secure, 并且开启HTTPS. 即可解决该问题.
解决方法
- 上述所说, SameSite =None; Secure 并启用 HTTPS
- 放弃Session 改用 Token.