Chrome 浏览器 Cookie 跨域共享与Chrome升级91版本问题

本文介绍了Chrome 51到91版本之间Cookie的SameSite属性变化及其对跨域的影响。在Chrome 91版本后,实验属性不再可用,提出了四种解决方案:下载旧版Chrome、修改快捷方式目标、使用proxy代理和切换至火狐浏览器。针对开发者在调试过程中遇到的Cookie跨域问题,提供了临时应对方法。

Chrome 51版本后91版本前

Chrome 51 版本开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。SameSite 可以设置三个值(Strict、Lax、None)。

详见阮一峰的Cookie 的 SameSite 属性

在这里插入图片描述
由此可见,在开发过程中运行本地项目调试接口,如果某些接口使用cookie作为校验,会涉及到cookie跨域丢失问题。对于前端来说,调试项目时想要实现浏览器跨域共享cookie,必须设置浏览器的实验属性。

  1. 在Chrome 地址栏输入chrome://flags打开Chrome 实验。
  2. 通过设置SameSite by default cookiesCookies without SameSite must be secure 来实现SameSite和Secure的设置。
    在这里插入图片描述
  3. 重启浏览器

Chrome 91版本后

2021年5月27日发布的Chrome 91版本后,Chrome实验属性关于SameSite by default cookiesCookies without SameSite must be secure的设置消失了,应该是 Chromium 升级了,使用 Chromium 的浏览器都无法设置了,目前有俩种开发调试时的临时解决办法。

方式1:下载旧版chrome

Chrome 各版本下载地址

官方Edge浏览器各版本下载地址

如果懒得下百度网盘的话可以从我的资源那里下载89版本的Chrome,不要积分~~,我也是从别处下载的。
下载之后按照91版本前的方式一配置就ok了。

方式2:修改chrome快捷方式目标

这种方式预计在94版本之后将变为不可用

  1. 在chrome的快捷方式右击–>属性
  2. 目标输入框最后面加一个空格,然后粘贴以下内容,应用保存就可以了。
--disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure

image.png

方式3:proxy代理

这里以vue项目为例,加入我们请求的接口地址是http://10.2.18.3:8081/api/...,这类的格式,在vue.config.js里配置

   devServer: {
        open: false,
        https: false,
        hotOnly: true,
        proxy: {
            '/api': {
                target: 'http://10.2.18.3:8081',
                changeOrigin: true,
                pathRewrite: { '^': '' }
            }
        }
    }

设置axiosbaseUrl/api,这样开发环境走我们自己的代理,访问自己运行的服务,线上的话也能根据域名自己匹配,相当方便。

方式4:用火狐

目前火狐是不存在这个问题的,不过我不太习惯火狐的使用。在不久后,估计火狐也会进行相关的升级工作。

大神们如果有别的更好的解决方案欢迎留言~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值