springboot跨域如何设置SameSite的实现
作者:秋风浪子 发布时间:2022-08-03 21:27:07
前言
今天记录一个前段时间遇到的一个小问题的解决方法, 跨域!!!
相信跨域这个问题, 做开发的或多或少都遇到过, 而且已经有很多博主已经分享了相关的内容, 这次我用他们的方式都没有解决到, 所以记录一下.
问题
我们公司有个系统的域名跟主系统的域名不一致, 但是我们又需要把所有的系统都集成在一个框架下面, 使用的是iframe技术来实现. 使用单点登录来做所有系统的登录. 这样的设计就导致我们访问域名不同的系统的时候, 会有跨域的问题. 通常的解决方式这样, 在springboot里面设置跨域 * , 可以实现跨域访问.
但是, 但是, 我们使用了这个配置之后, 依然无法实现登录, 最明显的一个问题就是每次请求的sessionid都不一样, 即使是同一个页面的多个请求, sessionid也不一样.这样我们就无法通过session来保留会话.
解决方法
经过老夫不懈的Google, 最开始定位到问题的原因是因为Google浏览器的SameSite属性导致的. Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。这个属性有3个值, 具体的介绍可以看这篇文章 里面讲的很详细.
我们选择的是直接关闭这个属性,设置为None, 就像这样:
response.setHeader("Set-Cookie", "SameSite=None;Secure;JSESSIONID=xxx");
注意, 上面的代码有个坑
这样设置时候, 我们期望的是一个请求后, cookie里面能够设置JSESSIONID. 然而, 并没有达到我们的预期效果
在老夫的头发快抓完的时候, 在反反复复的阅读了上面的那篇文章之后, 老夫抱着尝试的心态改了一下上面的代码, 如下:
response.setHeader("Set-Cookie", "JSESSIONID=xxx;SameSite=None;Secure");
仔细看, 仅仅是JSESSIONID的位置改变了一下. 然后就成功了, 苍天啊~ 大地啊~仅仅是一个位置啊~~~~~~~
来源:https://juejin.cn/post/6959501952568803336


猜你喜欢
- TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点。TreeSet 和 Tree
- 这是android新推出的一个,让卡片带立体感的一个控件,就是一个卡牌,有点类似于布局那种的东西,里面可以添加控件内容先看看运行的效果图:1
- Feign进行调用@FeignClient 找不到通过Feign 进行调用这里配置spring-cloud 版本为 M8的 <
- 问题(1)重入锁是什么?(2)ReentrantLock如何实现重入锁?(3)ReentrantLock为什么默认是非公平模式?(4)Ree
- 第1类:嵌套模式package day14;import java.io.FileInputStream;import java.io.Fi
- 1.Feign传统方式的不足①.在微服务架构中,当我们使用Feign传统方式进行服务调用的时候,需要在每个服务消费者中添加FeignClie
- 我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错。为了更便于使用,笔者整
- CyclicBarrier是什么CyclicBarrier是Java并发包中提供的一种同步工具类,它可以让多个线程在某个屏障处等待,直到所有
- 今天遇到文件上传的问题,使用Ajax方式进行提交,服务器一直报错The current request is not a multipart
- 有时候在配置中心有些参数是需要修改的,这时候如何不重启而达到实时生效的效果呢?添加依赖<dependencies>
- using System;using System.Web;using System.Web.Security;namespace Auth
- selenium 中如何处理弹出窗口阅读目录原理测试页面的HTMLJava 代码原理在代码里, 通过 &n
- 一、简述记--log4net日志开源库的简单使用:控制日志文件大小,日志文件个数,滚动式覆盖,自由控制日志打印等级例子打包:http://x
- 前言:函数式编程是一种编程范式,其中程序是通过应用和组合函数来构造的。它是一种声明式编程范式,其中函数定义是表达式树,每个表达式树返回一个值
- 本文实例为大家分享了Java实现递归计算n的阶乘的具体代码,供大家参考,具体内容如下问题描述利用递归的思想实现阶乘的计算,以 n!为例(一)
- 本文实例为大家分享了android中NFC读写功能的具体代码,供大家参考,具体内容如下首先检查一下设备是否支持NFC功能private vo
- NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。使用 NPOI 可以在没有安装 Office 或者相应环境的机
- 我就废话不多说了,大家还是直接看代码吧~ public Sprite LoadSourceSprite(string relat
- 本文实例讲述了Java获得当前时间前指定几个小时具体时间的方法。分享给大家供大家参考,具体如下:package getBeforeHourD
- 本文实例为大家分享了android自定义imageview实现圆角图片的具体代码,供大家参考,具体内容如下自定义图片的属性,对图片进行圆角切