最近将线上的管理系统从http切换到https时遇到几个问题。
一是,我们的管理系统是前后端分离开发的,前端页面单独部署到nginx上,前端访问地址端口和后端访问地址端口不同,我们在切换到https时,希望使用子域名的方式,即page.company.com及backend.company.com的方式。和运维沟通,运维表示这种子域名的方式需要证书的支持,即https证书需要授予为*.company.com的方式。
二是,使用阿里云的slb,是否可以在同一个slb上挂不同的子域名,并且根据子域名路由到不同的后端服务器组,后来经过确认阿里的slb支持这种方式。可参考https://www.cnblogs.com/mikeluwen/p/9412969.html
三是,在切换过程中,分别配置了子域名访问,首先访问页面遇到的问题。
Mixed Content: The page at 'https://xxxx.company.cn/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://xxxx.company.cn/xxx/xxxx'. This request has been blocked; the content must be served over HTTPS.
(anonymous) @ xhr.js:178
原因是https页面中不能发起http的ajax请求,是受限于浏览器的安全策略。另外https页面是可以正常跳转到其他的http页面的,http方式托管的页面可以发起https的ajax请求。