一、前因
由于近期 Chrome 更新,原来的配置失效了,又来更文了,哎
是这样的。由于此前我的 Chrome 浏览器一直都是安装最新 Beta 版本,但是有一天因为该浏览器 Cookie 的 SameSite 属性的限制(Chrome 80 版本以后),导致跨域请求无法携带上 Cookie 了,导致在开发过程中遇阻了。
由于不习惯在 Safari 或者 Firefox 浏览器上进行开发,主要是操作习惯不太一样,而且一些插件的原因,也用着不舒服。就想着先安装旧版的浏览器继续开发,别耽误项目进度。当然这是权宜之计。
二、解决方法
自 Chrome 80 版本起,Chrome 更新了 SameSite 属性的默认值,由
None
改成了Lax
,主要用于限制第三方 Cookie,减少安全风险和用户追踪。同时,基于 Chromium 的 Edge 浏览器,在对应版本也会有此限制哦。
方案一(不推荐)
安装 Chrome 80 以下版本。
方案二:针对 Chrome 80 以上,Chrome 91 以下的浏览器
浏览器地址输入 chrome://flags/
并前往 ,搜索 SameSite by default cookies
和 Cookies without SameSite must be secure
,将这两项设置为 Disabled
,然后重启浏览器。
方案三:针对 Chrome 91 及更新版本
近期将 Google Chrome 升级到 91 版本之后,将上述提到的 SameSite by default cookies
和 Cookies without SameSite must be secure
直接屏蔽并设置为默认值(Default
),所以我们原来的配置失效了,且再也无法通过上述方式去修改配置了。
其中一个解决方法,还是降级到 Chrome 91 以下(仍然不推荐)。
- Win 平台:
在完全关闭 Chrome 浏览器的前提下,打开 Chrome 浏览器快捷方式,在目标后添加 --disable-features=SameSiteByDefaultCookies
保存。
Win 平台未亲测,方案和配图源自:NgZaamPaang。
- Mac 平台:
前提还是完全关闭浏览器,根据不同的浏览器,选择不同的启动命令,在终端执行命令打开。
# Google Chrome
$ open -a "Google Chrome" --args --disable-features=SameSiteByDefaultCookies
# Microsoft Edge by Chromium
$ open -a "Microsoft Edge" --args --disable-features=SameSiteByDefaultCookies
方案四:针对未来版本(94 版本)
Chromium 项目官网提到在 94 版本通过命令行禁用设置 SameSite 默认值的方式会被移除,届时方案二和方案三的方式都将无法使用,后续可通过 Nginx 等代理工具或软件将跨域请求转为非跨域请求来解决改问题。
官方描述如下:
The flags
#same-site-by-default-cookies
and#cookies-without-same-site-must-be-secure
have been removed fromchrome://flags
as of Chrome 91, as the behavior is now enabled by default. In Chrome 94, the command-line flag--disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure
will be removed.
四、浏览器下载
Chrome 浏览器
最新稳定版:
https://www.google.cn/intl/zh-CN/chrome/?standalone=1
https://www.google.com/intl/zh-CN/chrome/browser/?standalone=1最新测试版:
https://www.google.com/intl/zh-CN/chrome/beta/?standalone=1&extra=betachannel
最新开发版:
https://www.google.com/intl/zh-CN/chrome/browser/?standalone=1&extra=devchannel最新 Canary 版:
https://www.google.com/chrome/canary
说明一下:
standalone=1
参数表示离线包,去掉属于在线安装。
如果我们想要下载历史版本的怎么办?
这里有个通用的下载地址,但是前提是,你需要知道想要下载的历史版本的版本号,挺蛋疼的是对吧。
下载地址是:
http://dl.google.com/chrome/install/[版本号后两位]/chrome_installer.exe
假如要下载的版本号是
15.0.874.102
,那么后两位就是874.102
,输入地址:http://dl.google.com/chrome/install/874.102/chrome_installer.exe
即可下载。该方法仅限于 Win 版,至于 Mac 版没找到方法,无奈。
Firefox 浏览器
正式版本
https://www.mozilla.org/zh-CN/firefox/开发者中文版本:
https://www.mozilla.org/zh-CN/firefox/developer/Beta 版、Nightly 版
https://www.mozilla.org/zh-CN/firefox/channel/desktop/#beta
五、参考
- Chrome 91 版本 SameSite by default cookies 被移除后的解决方案
- Chrome 中跨域 POST 请求无法携带 Cookie 的解决方案
- Chrome/Edge 91 版本 SameSite by default cookies 被移除后的解决方案
- Cookie 的 SameSite 属性(阮一峰)
- 当浏览器全面禁用三方 Cookie
更新于 2021.06.16。