cookie的SameSite属性默认值由None变为Lax
此时可以尝试显式声明 Cookie 的SameSite属性为None,并设置Secure (不然无效)。
Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险。
更多参考:谷歌浏览器 Cookie 的 SameSite 属性 (转)
它可以设置三个值。
Strict
Lax
None
None
Chrome 计划将Lax变为默认设置(80版本已实施)。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。
下面的设置无效。
Set-Cookie: widget_session=abc123; SameSite=None
下面的设置有效。
Set-Cookie: widget_session=abc123; SameSite=None; Secure
推荐解决方案:
1.针对正式运行引用,拒绝使用跨域的cookie
2.针对测试,使用,提供方案如下:
第一步:
打开chrome 输入 chrome://flags/ 搜索 SameSite by default cookies
找到SameSite by default cookies和Cookies without SameSite must be secure
将上面两项设置为 Disable
第二步:
底部relaunch 重新加载下即可
转自CSDN博主「小熊代码加」的原创文章
原文链接:https://blog.csdn.net/qq_36648555/article/details/109068482
但是chrome升级91版本后Chromium直接把选项SameSite by default cookies和Cookies without SameSite must be secure 给关了而且设置成默认开启, 那就没办法在flag里设置了.
但是文中还写了"In Chrome 94, the command-line flag
–disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
will be removed",
也就是说这个SameSiteByDefaultCookies和CookiesWithoutSameSiteMustBeSecure还没有被移除,
但是这个所谓的command-line flag是个什么东西呢?
这个command-line flag是只在启动Choromium时所带的参数, 在windows中可以通过修改应用的快捷方式目标属性来给启动的应用加上参数.
Chromium支持的command-line flag, 具体操作过程如下:
在右击Chrome/Edge的快捷方式, 点击"属性".
在"目标(Target)"属性中末尾加上
--flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --flag-switches-end
Mac
在终端中执行命令
open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/nantian/Documents/MyChromeDevUserData --flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --flag-switches-end
然后重启浏览器就可以了. 但是这种办法也不是长久之计,据说94版本之后这个方法也不可以了,按照官方的说法是因为如果任由开发者禁用这两个选项, 开发者就会变成容易被攻击的目标. 因此为了保护开发者, Chromium选择逐渐关闭这个通道.
转自 https://gadzan.com/chrome-edge-91hou
上述方法后来都不好用了,最终解决方式:
cmd找到chrome安装的位置,然后运行:chrome.exe --disable-web-security --user-data-dir=C:\MyChromeDevUserData