spring - 春季启动升级后阻塞:混合内容错误
问题描述
我已经将一些相互通信的微服务从 Spring Boot 1.5.3 升级到了 2.3.5。现在,当我的微服务 A 调用微服务 B 时,调用失败并在 chrome 的开发者工具的网络选项卡上显示以下状态(阻塞:混合内容)
我不确定发生了什么变化,我开始收到此错误。
在浏览器的控制台中,我收到以下错误:
Mixed Content: The page at 'https://gateway-url/my-endpoint' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://micro-service-b-url/login'. This request has been blocked; the content must be served over HTTPS.
奇怪的是,我的整个代码库中没有端点/login。springboot 升级后我无法理解这种行为。
任何有关 Spring Boot 升级如何导致此错误和可能的解决方案的指导表示赞赏。
注意:我找到了一些建议使用以下代码解决此问题的答案
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
但看起来它不适用于所有浏览器,我不确定在安全性方面使用此解决方案是否安全。
解决方案
了解问题并找到解决方案。
看起来 SpringBoot 1 中使用的安全挂钩在 SpringBoot 2 中已弃用。所以在我的微服务 B 中,属性文件中的以下配置在升级后不起作用
security.basic.enable: false
security.ignored=/**
结果 SpringBoot 2 在微服务 B 上强制执行默认安全配置,并且通过网关对微服务 B 的调用被重定向到 web-sso 登录,这导致了神秘的/login端点被调用。
解决方案是禁用默认安全性。我做了以下步骤:
1. Removed deprecated hooks from properties file:
security.basic.enable: false
security.ignored=/**
2. Disabled default security using below config
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class,
ManagementWebSecurityAutoConfiguration.class })
public class MyApplication extends WebMvcConfigurerAdapter{
注意:我不得不排除ManagementWebSecurityAutoConfiguration.class因为微服务使用的是 SpringBoot 执行器
推荐阅读
- java - 两个不同的 Double 对象可以在 Java 中共享相同的内存位置吗?
- python-3.x - 从 openai 健身房中的图像中学习:渲染功能的内存泄漏或屏幕外 glfw 问题
- javascript - 使用 jQuery 在滚动时加载 DOM 以提高性能
- flutter - Flutter/Dart:如何将地图解析为端点的值
- python - 检测变量值或名称中的变化
- r - 更改输入后 Shiny App 的问题未更新
- cypress - 如何在赛普拉斯测试中等待成功响应
- spring-boot - 使用 Kafka REST 代理发布 Avro 消息会引发“将 JSON 转换为 Avro 失败”
- javascript - 如何 QUIET ALL webpack console.log 输出?
- react-native - React native firebase - facebook登录未触发onAuthStateChanged监听器