Chrome 80 中 Iframe 跨域传 Cookie 的 Samesite 问题
我们知道,通过设置Access-Control-Allow-Credentials: true
和xhr.withCredentials = true
,可以实现跨域传递Cookie
. 达到保存用户登录态等目的。但使用不当,也会有CSRF风险。
所以,从Chrome 51
开始,浏览器的Cookie
新增加了一个SameSite属性,用来防止CSRF
攻击和用户追踪。
该设置当前默认是关闭的,但在Chrome 80
之后,该功能默认已开启。
所以当你无法使用某些网站第三方登录功能的时候,请查看一下是否受到了该设置的影响。
- 对于使用者,快速解决方案:
方案1. 打开
Chrome
设置,将chrome://flags/#same-site-by-default-cookies
禁用,然后重启浏览器。
方案2. 使用低版本浏览器,可选择极速360。 - 对于开发者,解决方案:
方案1. 将
SameSite
属性值改为None
, 同时 将secure
属性设置为true
。且需要将后端服务域名必须使用https
协议访问。
方案2. 由于设置SameSite = None
,有SCRF
风险,所以,最佳方案是用token
代替Cookie
方式作验证。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现