chrome更新到80以上版本后,带来的跨域请求cookie丢失问题

chrome更新到80以上版本后,带来的跨域请求cookie丢失问题

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, 具体操作过程如下:

  1. 在右击Chrome/Edge的快捷方式, 点击"属性".

  2. 在"目标(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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Chrome浏览器从版本108开始,对于跨域问题做出了一些改变。在此之前,浏览器是严格限制跨域请求的,但是自从Chrome 108版本之后,浏览器默认支持通过一些新的方法来解决跨域问题。 首先,Chrome 108引入了新的CORS(跨域资源共享)规范,它通过在服务器的响应头中添加一些额外的字段来指示浏览器是否允许跨域请求。如果服务器返回的响应中包含了'Access-Control-Allow-Origin'字段且值为请求的域名,则浏览器将允许该跨域请求。这样,网页开发者可以通过在服务器端设置正确的响应头来解决跨域问题。 其次,Chrome 108还引入了一种新的跨域请求方式,即Fetch API。Fetch API是一种用于代替传统的XMLHttpRequest对象的新的网络请求API,它默认支持跨域请求,并且提供了一系列的方法和选项来处理跨域问题。通过使用Fetch API,网页开发者可以更灵活地发送和处理跨域请求。 此外,Chrome 108还提供了一些其他的跨域解决方案。例如,开发者可以在服务器端设置CORS策略,通过细粒度的配置来控制哪些域名可以进行跨域请求。另外,Chrome 108也支持通过在请求中添加'Access-Control-Allow-Credentials'字段来允许跨域请求携带认证信息。 综上所述,Chrome浏览器108版本以上对跨域问题做出了一些改进和优化。通过使用CORS规范、Fetch API以及其他解决方案,网页开发者可以更轻松地处理跨域请求,并提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值