https 网站不显示无法访问 http 处理方法
问题
如果在 https 协议的页面中加载了 http 资源,浏览器将认为这是不安全的,会默认阻止,会带来资源不全的问题。
比如:图片无法显示,样式无法加载,JS 无法加载。如果页面关键资源均为 http 协议,所有的操作、请求都将无效。
报错
Mixed Content: The page at 'https://xxxx.com' was loaded over https, but requested an insecure script 'http://xyz.com', this request has been blocked; the content must be served over https.
解决方案
-
直接复制位于http协议服务器上的静态资源到本地,重新创建一套https的资源,让http和https指向各自的服务器(多用于解决第三方的问题);
-
用同一套代码,由nginx代理转发http和https到相同的静态资源,这要求两个协议处于同一服务;
-
加载静态资源时,不直接指定协议,使用当前页面协议,如
<script src="//cdn.com/jquery.js"> </script>
会自动根据当前页面的协议进行资源加载; -
在页面的head中加入meta标签
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
其作用是将当前页面所有http协议地址升级为https进行请求,由于该方案仅替换协议部分,如果http和https不同协议下静态资源路径有变化,该方法无法使用; -
iframe的地址是http协议的,如果他们拒绝升级,解决方案只有自己写一遍iframe页面到本地。
作者:ls_qq_2670813470
来源链接:https://blog.csdn.net/qq_14965517/article/details/121512233
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。