由cookie SameSite引起的坑
发布时间:2019-11-27 23:03:23阅读:(1581)
最近有个项目需要嵌入在另一个系统的iframe中运行,但是一旦运行在iframe中,就出现用户无法登录的象限。系统后台采用Spring boot+Spring Security进行鉴权,用户登录后会写入一个session的cookie,但是当页面第二次请求时,会发现cookie并没有携带在请求上,最后查找了一些资料,发现是cookie的SameSite属性在搞鬼。

上图是用户登录时,Spring写入的cookie,我们发现最后一个SameSite属性值为Lax。参考相关文档(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#Syntax),SameSite的属性可以为Strict,Lax,None。
Strict为严格模式,在跨域时,任何情况下都不会发送Cookie,Lax稍微宽松些,但大部分情况也不会发送底三方的Cookie,因此需要再跨域的情况下能正常读取cookie,需要将SameSite属性设置为None。
以下是在Spring boot下的设置方式:
@Bean
public CookieSerializer httpSessionIdResolver(){
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setSameSite(null);
return cookieSerializer;
}
再次运行项目,查看控制台发现SESSION的SameSite属性没了,用户终于可以正常登陆了
文章版权及转载声明:
文章转载或复制请以超链接形式并注明出处陌上小筑
文章推荐
热门文章
- 使用rook在k8s管理ceph集群
- 如何拉取k8s.grc.io、quay.io的镜像
- 二进制方式搭建Kubernetes 1.19.3高可用集群(三)——部署controller-manager和scheduler
- 由cookie SameSite引起的坑
- 二进制方式搭建Kubernetes 1.19.3高可用集群(二)——部署ETCD集群和api-server
- 使用Spring ldap操作active directory
- Gitlab企业版证书生成
- G1GC调优时遇到的坑
- Jackson 2.11.0无法使用@JsonCreator反序列化枚举值
- Spring boot 2.4.2 redisson报错问题排查
标签云
站点信息
- 建站时间:2019年6月15日
- 文章统计:32篇文章
- 统计数据:百度统计
- 总访问量:44377
- 今日访问量:43
发表评论
setSameSite爆红了,这是哪个依赖的哇
sameSite是spring-session 2.1版本后加的属性,如果没有这个属性,要么升级一下jar包,要么自己实现一下CookieSerializer这个接口