阻止:春季启动升级后出现混合内容错误

时间:2021-04-19 17:45:00

标签: spring spring-boot spring-security spring-boot-2

我已经将一些相互通信的微服务从 Spring Boot 1.5.3 升级到 2.3.5。 现在当我的微服务 A 调用微服务 B 时,调用失败并显示以下状态 在 chrome 开发者工具的网络标签上(blocked:mixed-content)

我不确定是什么改变了我开始收到此错误。

在浏览器的控制台中,我收到以下错误:

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">

但看起来它不适用于所有浏览器,我不确定在安全方面使用此解决方案是否安全。

1 个答案:

答案 0 :(得分:0)

了解问题并找到解决方案。

看起来 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执行器