前言
由于HTTPS
是HTTP over Secure Socket Layer
,以安全为目标的HTTP
通道,所以在HTTPS
承载的页面上不允许出现http
请求,一旦出现就是提示或报错。下面汇总几种解决方案:
方法1:服务端设置header
好在W3C
工作组考虑到了我们升级HTTPS
的艰难,在2015年4月份就出了一个Upgrade Insecure Requests
的草案,他的作用就是让浏览器自动升级请求。在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
方法2:页面设置meta头
在页面中加入meta
头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
如果页面比较多,需要统一改变的话,可以将这条语句添加到全局
js
文件里,全局调用。
方法3:删除链接中的http:
推荐方法,不指定具体协议,使用资源协议自适配,比如,当前为https
页面,那么就是https
资源,如果是http
页面,那么就是http
资源。具体方法超简单:
<script src='//blog.vipz.top/libs/jquery/jquery.min.js'></script>
方式4:分别部署应用服务
最笨的方法,直接复制原有代码,写成两套代码,一套为http
使用,一套为https
使用,http
和https
各自指向各自服务。