欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-20 17:19:31
...

一、遇到的问题:

        先描述一下问题,原来的系统把架构从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证书都申请好,浏览器认识的证书就没问题了

 

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

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

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

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