一、WHAT
最近在对SpringBoot/SpringCloud框架进行版本升级后,发现部分服务的API接口无法正常访问,莫名奇妙出现blocked:mixed-content问题(API接口是HTTPS)!
表面上看,这是一个受到浏览器机制限制,HTTPS协议不允许访问HTTP接口的问题!
但事实上,前端请求是正确的!毋庸置疑,这的的确确是一个HTTPS请求!
本次升级版本:
- SpringBoot:2.3.12.RELEASE
- SpringCloud:Hoxton.SR12
二、WHERE
首先可以简单排除前端请求问题!接口请求流程如下:
1、nginx
由于本次未对nginx及相关配置做太多改动,初步判断不太可能是nginx转发的原因!
分析nginx日志,发现接口发生了302跳转!
2、gateway
gateway的原因吗?有可能,暂不排除!
3、service
通过postman发送https请求进行测试,发现请求莫名重定向至 http://xxx:port/login
由此,可以初步断定,请求在service端发生了重定向!
三、WHY
从重定向的地址login,可以初步判断,这是由于spring security框架未通过认证而将请求重定向至登录页面!
四、HOW
由于系统并未使用到Spring Security框架,在本次版本升级之前已经通过排除自动配置类方式禁用了Security框架!所以判断本次出现问题,是由于框架升级以致规则发生变化所致!
@SpringBootApplication(exclude = {
SecurityAutoConfiguration.class
})
本次SpringBoot版本升级,相确切来说,2.1.0版本之后,新增的下面这个类会依赖引入Spring Security框架!
修改启动类,增加排除类ManagementWebSecurityAutoConfiguration,问题解决!!
@SpringBootApplication(exclude = {
SecurityAutoConfiguration.class,
ManagementWebSecurityAutoConfiguration.class
})