`
sanry
  • 浏览: 35325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring boot使用frame框架https跨域名访问时cookie,session丢失

阅读更多

一、遇到的问题:

        先描述一下问题,原来的系统把架构从Spring mvc改成了Spring Boot,并且配置了支持https访问。我用frame框架集成了两个服务,但是两个服务的域名是不一样的。举例,A服务:a.fk.com,B服务:b.fk.com。当我登录到A服务后通过frame集成的方式去访问B,用http可以访问,然而https就不支持。

二、问题定位:

       1.由于从A无法登陆B服务,试验直接从浏览器登录B服务登录成功。

       2.回来再从A登录B又可以登录了。但是再访问B的其他功能又失败,并且发现清cookie之后,又不能从A访问B。便以为是跨域造成的cookie和session失效

       3.查看B日志发现登陆后每次交互的Session id都是不同的,更认为是跨域后session丢失

       4.试验网上各种frame和Spring Boot的跨域解决办法,都无效--放弃

       5.逼急了直接连生产环境,意外发现居然可以访问(生产环境尚未升级Spring Boot框架),以为是替换Spring Boot框架造成的,而且http可以,https就不行,就以为自己写的http强转https造成的,又纠结好久试验了好几种办法,依然没有解决

       6.如果不是替换Spring Boot架构导致的,那就省http和https的差别了,灵光一闪,是不是浏览器SSL证书问题

       7.申请了两个公网的云服务器,并且给两个服务器申请了两个免费的SSL证书,验证果然可以了,解决了(妈的,想砸电脑了)

三、总结问题原因:

       本地测试一直用自己生成的SSL证书,虽然浏览器一直有不安全提示,但是继续访问可以使用,所以一直没在意。但是在代码中frame用https访问B系统时浏览器并不提示不安全或者SSL证书的问题,就是不通,所以很长时间没意识到这个问题。把各个服务的SSL证书都申请好,浏览器认识的证书就没问题了

 

==============

此问题折腾了好几天,一个突然的意识解决了

写这么多为了以后给自己提个醒,也希望可以对其他人有些帮助

==============

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics