分享按钮
RSS订阅

解决https无法访问http资源

作者: 清逸成风 |来源:原创| 标签: https   SSL报错  

      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() 办法中,将资源依照需求加载进来即可。

4. 引荐办法,不指定具体协议,运用资源协议自适配,比方,当前为https页面,那么就是https资源,假如是http页面,那么就是http资源。具体办法超简略:

    如何通过简单的方法将原网站从HTTP改成HTTPS呢?    

    很多时候时候我们需要将已有的网站从http转变成https,但是原网站中有大量的http引用,这个时候我们应该如何快速的完成转换呢?其实有一个简单的方法,在不修改原连接代码的情况下,在头部添加:

<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests'>
信息,将http默认升级至https连接,避免大量的代码修改