有问题可以关注公众号:YangzaiLeHeHe
谷歌浏览器跨域丢失Cookie问题
一、问题背景交代
公司内部系统A页面内嵌系统B的界面。当在A系统的界面中点击B系统图标跳转时此时跨域,导致跳转后的界面空白,A系统会向B系统发送一些请求参数,而B系统没有拿到这些参数,导致重定向后的界面空白。
二、分析
2.1、整体调用链路
2.2、复现
这个问题在Chrome浏览器【我本地的】100%复现,后来切换到了Edge浏览器【首先要清除历史浏览记录cookie】,发现可以访问,那么怀疑是浏览器的限制导致的。
2.3、分析
因为A系统界面内点击B系统图标访问B系统时会向B系统传递参数,而当B系统单点之后由B系统后端重定向到内嵌的B系统界面的时候参数丢失,分析应该是cookie丢失导致的参数丢失。
在各自的域进行SSO认证的时候是不会丢失cookie的,见下图:
cookie的丢失发生在跨域的时候 也就是2.1 图中的虚线部分。
三、原因
随着Chrome浏览器的升级,对于cookie的安全校验策略也在随之改变
我这边使用的是86版本,
Reject insecure SameSite=None cookies Network / Connectivity Deprecate and remove the use of cookies with the SameSite=None attribute but without the Secure attribute