应用场景:
采用Spring Boot Admin监控微服务运行情况,部署两个Admin服务,然后通过Nginx进行负载均衡,从而实现Admin服务高可用。在Nginx中配置SSL证书,通过HTTPS协议进行访问。
问题描述:
在浏览器中访问https://admin.testxxx.com/#/applications,页面无法显示,查看页面请求信息后发现浏览器在加载当前页面的资源文件时使用的是http://admin.testxxx.com的地址,因为请求协议http和地址栏中的请求协议https不一样,所以浏览器认为是跨域访问,阻止了请求,导致页面无法显示。
原因分析:
根据浏览器中的错误提示,可以断定是Admin的页面中在某个地方设置了请求地址,从而导致异步请求的地址和地址栏中的地址不一致。查看页面源码,可以发现
<base href="http://admin.testxxx.com/">
这个地址中使用的是http协议,很有可能是异步请求的时候就使用了这里的值。接下来我们看看能否从官方源码中找到答案,下面是Admin前端代码中index.html的部分代码。
<head>
<base th:href="${baseUrl}" href="/">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="format-detection" content="telephone=no,email=no">
<meta name