我已经升级了一些微服务,可以相互通信,从springboot1.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.
奇怪的是,在我的整个代码库中没有端点/登录。我无法理解springboot升级后的这种行为。
任何关于spring引导升级如何导致这个错误和可能的解决方法的指导都是值得赞赏的。
注意:我发现一些答案建议使用下面的代码来解决这个问题
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
但看起来它并不是适用于所有浏览器,我不确定使用这个解决方案是否安全。
1条答案
按热度按时间qyuhtwio1#
了解问题并找到解决方案。
看起来springboot1中使用的安全钩子在springboot2中被弃用了。所以在我的微服务b中,属性文件中的以下配置在升级后不起作用
结果,springboot2在micro服务b上强制执行默认的安全配置,通过网关对micro服务b的调用被重定向到websso登录,从而导致调用神秘的/登录端点。
解决方案是禁用默认安全性。我完成了以下步骤:
注意:我必须排除managementwebsecurityautoconfiguration.class,因为微服务使用的是springboot