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.

解决方案

  1. 直接复制位于http协议服务器上的静态资源到本地,重新创建一套https的资源,让http和https指向各自的服务器(多用于解决第三方的问题);

  2. 用同一套代码,由nginx代理转发http和https到相同的静态资源,这要求两个协议处于同一服务;

  3. 加载静态资源时,不直接指定协议,使用当前页面协议,如
    <script src="//cdn.com/jquery.js"> </script>
    会自动根据当前页面的协议进行资源加载;

  4. 在页面的head中加入meta标签
    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    其作用是将当前页面所有http协议地址升级为https进行请求,由于该方案仅替换协议部分,如果http和https不同协议下静态资源路径有变化,该方法无法使用;

  5. iframe的地址是http协议的,如果他们拒绝升级,解决方案只有自己写一遍iframe页面到本地。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值