Spring boot使用frame框架https跨域名访问时cookie,session丢失 Spring Bootframehttpscookiesession
一、遇到的问题:
先描述一下问题,原来的系统把架构从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证书都申请好,浏览器认识的证书就没问题了
==============
此问题折腾了好几天,一个突然的意识解决了
写这么多为了以后给自己提个醒,也希望可以对其他人有些帮助
==============
上一篇: Jenkins安装与配置
下一篇: 开发工具——gitbook