https网页加载http资源提示加载不安全脚本

 https是当下的网站的主流趋势,甚至像苹果这样的大公司,则完全要求用户必须使用https地址。

 然而对于以前http链接来说,我们往往就存在一个兼容性问题,因为你不可能一下就全部切换过去,应该在很长一段时间内,https与http将共存。

 https与http共存的场景有如:

   1. app已经发布出去,其调用接口的地址为http的,那么这是必须兼容的。

   2. app中嵌入了h5页面,而这页面在以前的设计中是使用http访问的,如果换成https地址,极有可能将导致h5页面无法打开。

   3. 对于流量推广一类的业务,可能原有的http推广地址已经发送给第三方,而且即使你通知到第三方要求改为https,也不排除有http地址的访问。

 针对以上场景,我们肯定是要https与http共存的。

 改https初看起来,其实就是一个域名指向的问题,也许我们只要将http的请求,直接跳转到https地址去,那么也就完成了https的切换。实际并不是这么简单的。

 因为https地址中,如果加载了http资源,浏览器将认为这是不安全的资源,将会默认阻止,这就会给你带来资源不全的问题了,比如:图片显示不了,样式加载不了,JS加载不了。因为样式类,基本上都是写在本地的,所以一般还可以,但是一些公共的js文件,往往就是存在于cdn或者其他服务器上,这时候,如果访问不了,可能就导致了业务就完全操作不了。比如:jquery效法加载失败,可能所有的操作、请求都将无效了。

 将http请求直接跳转至https请求,是一种解决办法,而且很多公司都是这么干的,比如百度什么的,但是前提是,你所有的服务都已切换https完成。

 但是对于,要兼容https、http两种协议的情况,怎样才能做到呢?

 1. 最笨的方法,直接复制原有代码,写成两套代码,一套为http使用,一套为https使用,http和https各自指向各自服务。

 2. 可用的方法,用同一套代码,在后台请求标识好协议,将该变量传到html页面中,进行协议替换,如:后台变量,$protocol = ‘https://‘;  前台接收变量src=‘{$protocol}res.aa.com/jquery.js‘。

 3. h5方法,使用js自己加载协议情况,如在body onload=‘aa()‘, 在aa() 方法中,将资源按照需求加载进来即可。<script>!window.jQuery && document.write(unescape(‘%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E‘))</script>

 4. 推荐方法,不指定具体协议,使用资源协议自适配,比如,当前为https页面,那么就是https资源,如果是http页面,那么就是http资源。具体方法超简单:<script src=‘//www.aa.com/jquery.js‘></script>

 5.含有超链接的需要换成<a onclick=window.open(‘http://jxipt.365960.cn/‘) style=‘cursor:pointer‘>信息地址</a>

使用 iframe

使用 iframe 的方式引入 http 资源,比如在 https 里面播放优酷的视频,我们可以先在一个 http 的页面里播放优酷视频,然后将这个页面嵌入到 https 页面里就可以了。

另外一个典型的例子是在 https 页面里通过 Ajax 的方式请求 http 资源,Chrome 是不允许直接 Ajax 请求 http 的。如果两个页面的内容都可以控制的话,当前窗口可以 iframe 窗口进行通信。

其他用法

<img src="//domain.com/img/logo.png">

这个小技巧同样适用于 CSS :

.omg { background: url(//websbestgifs.net/kittyonadolphin.gif); }

原文地址:https://www.cnblogs.com/jassy/p/8461812.html

时间: 2024-10-17 08:52:37

https网页加载http资源提示加载不安全脚本的相关文章

jQuery Mobile 手动显示ajax加载器,提示加载中...

在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大致流程如下: 1. 启动加载器,显示“加载中...”: 2. 进行ajax请求,请求完成后更新页面数据,刷新jQuery Mobile控件样式: 3. 关闭加载器. 下面就来讲解jQuery Mobile 1.2.0 和 1.1.0 中手动显示加载器的方法(很简单,几行代码就OK了!). 首先是jQ

异步加载text资源,加载一次、执行一次、链式回调

function getText(time,callback) { setTimeout(function () { callback(time) },time) } var callbackMap={};//记录加载完成的回调 var resMap={};//记录url var loadbackMap={};//记录url 加载完成 var loadedMap={};//记录url 加载完成 var loadedI=-1;//记录url 加载完成位置 var orderI=0;//记录url

SpringBoot加载静态资源 无法加载js问题

spring boot thymeleaf 静态资源 默认模板位置为templates , static出现静态资源方在该目录下会出现访问404错误 查了很久发现是 @EnableWebMvc 的问题,我修改方式把注解去掉,用默认的, @Configuration//@EnableWebMvc //添加该注解,则是完全控制MVC,public class CrossConfig extends WebMvcConfigurerAdapter { @Override public void add

Flask之加载静态资源

Flask之加载静态资源 1.加载css样式 <link rel="stylesheet" href="{{ url_for('static',filename='css/img.css',_external=True) }}"> 2.加载js脚本 <script rel="stylesheet" src="{{ url_for('static',filename='js/img.js') }}">&l

预加载与智能预加载(iOS)

来源:Draveness(@Draveness) 链接:http://www.jianshu.com/p/1519a5302141 前两次的分享分别介绍了 ASDK 对于渲染的优化以及 ASDK 中使用的另一种布局模型:这两个新机制的引入分别解决了 iOS 在主线程渲染视图以及 Auto Layout 的性能问题,而这一次讨论的主要内容是 ASDK 如何预先请求服务器数据,达到看似无限滚动列表的效果的. 这篇文章是 ASDK 系列中的最后一篇,文章会介绍 iOS 中几种预加载的方案,以及 ASD

如何让aspnet服务加载静态资源html(我的动态网页静态化) 转

我们知道,IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件. 当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后Check请求资源的类型,并依据资源映射信息(存储在IIS元库中,一种IIS专用的配置数据库)将请求的资源分配给特定的处理程序模块.1,如果是静态资源的请求,则分配由IIS处理(IIS在本地Web Server上访问请求的文件),将内容输出到控制台,发出请求的浏览器就能接收到它了.-----End2

在IIS上新发布的网站,样式与js资源文件加载不到(资源文件和网页同一个域名下)

在IIS上新发布的网站,网站能打开,但样式与js资源文件加载不到(资源文件和网页是同一个域名下,例如:网页www.xxx.com/index.aspx,图片www.xxx.com/pic.png). 然后单独打开资源文件(例如打开图片的链接)是,报错: 这个问题应该是web.config配置文件的设置问题. 在配置文件的<httpHandlers>下的节点,对应的资源文件的type值设置可能是“System.Web.DefaultHttpHandler”值(默认),例如: <httpHa

schtasks在win7下提示错误:无法加载列资源

转自: http://blog.chinaunix.net/uid-24946452-id-2887851.html 查看cmd 编码 chcp 如使用 936中文GBK编码的话 schtasks.exe /query 会报错 错误: 无法加载列资源. 调整 936 为 437 美国编码 则可以运行,但是无法打印出非ascii字符.(非ascii字符都变?.问号"?") 调整方法 chcp 437 就好了啦

手把手教你构建 Android WebView 的缓存机制 &amp; 资源预加载方案

前言 由于H5具备 开发周期短.灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案. 目录 1. Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍. 1.