由于项目需要,不能在后台配置解决跨域,所以只能在浏览器上下手,着实折磨了我好一阵子。
1. 问题描述
平台跳转其他平台页面,并自动登录
浏览器: chrome
2. 解决方法
2.1 经查阅资料, chrome浏览器有跨域拦截,即sameSite。不同域下无法携带cookie。解决方法为在谷歌浏览器地址栏中输入chrome://flags/,将关于sameSite的属性设置为disabled,重启浏览器即可。这是针对80版本以上的chrome浏览器。
2.2 后来有一天,自动登录突然又不好用了。崩溃……打开chrome://flags/,发现几个关于sameSite的属性SameSite by default cookies, Cookies without SameSite must be secure根本找不到了,再度崩溃……
然后赶紧查看浏览器版本,发现升级到91版本。于是,重新找解决方案。终于又找到了方法。
在chrome的快捷方式右键——属性——快捷方式——目标里的路径后面加启动参数
--flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --flag-switches-end
重启浏览器即可。但是这个方法在没几天后,再次失效。。。
2.3 于是挖地三尺又找到一个方法,依然是加启动参数
--args --disable-web-security --user-data-dir=D:\HaoroomsChromeUserData
但是我加上后并没有效果。。。于是我突发奇想把两个启动代码结合了一下
--flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --user-data-dir=D:\HaoroomsChromeUserData --flag-switches-end
终于成功!
注意目标中的原路径和新加入的启动参数之间要加一个空格。否则会报错。并在此操作前先备份自己的浏览器书签和常用密码。
参考文章:
新版chrome浏览器设置允许跨域 (haorooms.com)
https://gadzan.com/chrome-edge-91hou