springboot跨域如何设置SameSite的实现

 更新时间:2021年05月08日 14:24:41   作者:秋风浪子  
这篇文章主要介绍了springboot跨域如何设置SameSite的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

今天记录一个前段时间遇到的一个小问题的解决方法, 跨域!!!
相信跨域这个问题, 做开发的或多或少都遇到过, 而且已经有很多博主已经分享了相关的内容, 这次我用他们的方式都没有解决到, 所以记录一下.

问题

我们公司有个系统的域名跟主系统的域名不一致, 但是我们又需要把所有的系统都集成在一个框架下面, 使用的是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的位置改变了一下. 然后就成功了, 苍天啊~ 大地啊~仅仅是一个位置啊~~~~~~~

到此这篇关于springboot跨域如何设置SameSite的实现的文章就介绍到这了,更多相关springboot跨域设置SameSite内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 选择java的理由:java之父访谈实录

    选择java的理由:java之父访谈实录

    选择java的理由:java之父访谈实录...
    2006-12-12
  • mybatis-plus内置雪花算法主键重复问题解决

    mybatis-plus内置雪花算法主键重复问题解决

    本文主要介绍了mybatis-plus内置雪花算法主键重复问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Spring中配置和读取多个Properties文件的方式方法

    Spring中配置和读取多个Properties文件的方式方法

    本篇文章主要介绍了Spring中配置和读取多个Properties文件的方式方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Spring注入Bean的一些方式总结

    Spring注入Bean的一些方式总结

    这篇文章主要给大家总结介绍了关于Spring注入Bean的一些方式,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • idea鼠标控制放大缩小的操作

    idea鼠标控制放大缩小的操作

    这篇文章主要介绍了idea鼠标控制放大缩小的操作教程,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java的java.security.egd源码解读

    java的java.security.egd源码解读

    这篇文章主要为大家介绍了java的java.security.egd源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 使用Java注解模拟spring ioc容器过程解析

    使用Java注解模拟spring ioc容器过程解析

    这篇文章主要介绍了使用Java注解模拟spring ioc容器过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringMVC九大组件之HandlerMapping详解

    SpringMVC九大组件之HandlerMapping详解

    这篇文章主要介绍了SpringMVC九大组件之HandlerMapping详解,HandlerMapping 叫做处理器映射器,它的作用就是根据当前 request 找到对应的 Handler 和 Interceptor,然后封装成一个 HandlerExecutionChain 对象返回,需要的朋友可以参考下
    2023-09-09
  • 利用mysql实现的雪花算法案例

    利用mysql实现的雪花算法案例

    这篇文章主要介绍了利用mysql实现的雪花算法案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java中JS引擎实现的一句话木马

    Java中JS引擎实现的一句话木马

    这篇文章主要为大家介绍了如何利用Java中JS引擎实现的一句话木马,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步
    2022-02-02

最新评论