Cookie中SameSite的问题与解决办法

问题:在解决跨域问题的前提下,使用谷歌浏览器仍然登录失败。

  由于登录时使用到了cookie,项目又是前后端分离,所以在跨域前提下解决跨域问题后可以正常发送cookie。但是在Chrome浏览器高版本中,它为了防止第三方网站盗用cookie实现CSRF攻击,所以谷歌采用设置cookie的same-sitesecure属性来防止CSRF攻击。

解决方案:

一、强制用户不要使用Chrome类似的浏览器(开个玩笑哈,这样当然是不合理的)
那肯定是pass掉
二、关掉Chrome浏览器的这个设置(由于安全性,所以该方法也是不推荐!)

首先在地址栏搜 chrome://flags,然后
在这里插入图片描述
注: 由于关掉了这些设置,所以有可能会发生CSRF攻击,有安全隐患,不建议。

三、使用https来保证后台接口安全性(虽然安全,但要花钱)
在使用https的前提下根据Chrome浏览器的提示,还需设置cookie的same-site和
secure属性。
例如:SameSite=None; Secure
四、将前端的url和后端请求接口设置为同一域名下即可

例如:

前端:http://qianduan.test.com
后端:http://houduan.test.com

这两个项目都属于 test.com 域名下,所以属于同站不同源,浏览器就会认为url和请求目标一致,并非第三方网站请求,所以就会成功发送cookie了。



same-site属性介绍

  • same-site:该属性值有三个,None,Lax,Strict三种;
    None:该规则是最为宽松的一种,不做任何限制,但是同时也需要设置secure,例如:
-  SameSite=None; Secure

** 注:** 当使用该规则时,则需使用https。

  • Lax:该规则较为宽松,大多数是不发送第三方cookie的,但是导航到目标网站的get请求除外。

图表参考于 http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html

  • Strict:该规则是最为严格的,完全禁止发送第三方cookie,只有当前URL和请求目标一致才可以。
  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JustDoSelf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值