https页面中引入http资源的方式

这篇具有很好参考价值的文章主要介绍了https页面中引入http资源的方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https页面中引入http资源的方式

https 如何嵌入一个http的网站,https,http,ssl,网络协议,网络

​ https引入http要根据具体情况分析,但是解决问题的前提是要先了解二者概念和区别,以及找问题出在哪里。不同项目有不同配置,不一定每次遇到同样的问题,都能用同样的办法解决,但是可以从以往遇到的情况和解决问题的方法进行分析,下面是我遇到https 页面中引入 http 资源遇到问题并解决的总结和分析。

一、HTTP和HTTPS的基本概念

​ 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

https 如何嵌入一个http的网站,https,http,ssl,网络协议,网络

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利用自己的私钥解密出会话密钥。

(6)Web服务器利用会话密钥加密与客户端之间的通信。

四、HTTPS的优点

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

五、HTTPS的缺点

虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

六、https页面引入http的资源的方法

有时候https页面需要同时引用https和http的外部资源,比如图片,视频,音频,外链等等。

我做的项目中https页面直接引用http的图片和视频,会导致图片或视频加载不出来。解决方法如下:

1.需要将页面中所有的链接,例如js,css,图片等等链接都由http改为https。

例如:http://www.baidu.com改为https://www.baidu.com

这里虽然将http切换为了https,还是建议保留http。因为有的http外链自身权限或者其他原因有一些限制,以至于就算将http改为https,外链也依然不能跳转,这种情况下就要好好测试,然后本身是http的还是用http,这种情况比较特殊。而本身外部资源所在的网站就算https,那直接改为https是可以的。

2.使用相对协议

在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。
相对协议: 就是将URL的协议(http、https)去掉,只保留//及后面的内容。这样,在使用https的网站中,浏览器会通过https请求URL,否则就通过http发送请求。

<img src="//domain.com/img/logo.png">
 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>  
 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
 
.omg { background: url(//websbestgifs.net/kittyonadolphin.gif); }

siteUrl是https://www.lzhpo.com

图片引入方式是这样子的,将站点前缀分离开来了

<img src="${siteUrl}/img/tx.jpg">

3.将http自动升级为https

HTTPS 网页中加载的 HTTP 资源被称之为 Mixed Content(混合内容),不同浏览器对 Mixed Content 有不一样的处理规则。

HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。

在页面的header中加入:

/*自动将http的不安全请求升级为https*/
 
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

4.使用资源协议自适配(js无法加载的情况)

比如,当前为https页面,那么就是https资源,如果是http页面,那么就是http资源。

在页面中引入:

<script src='//cdn.bootcss.com/jquery/3.3.1/jquery.min.js'></script>

5.使用iframe嵌入到https页面

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

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

<div class="video_content">
    <iframe height=148 width=220 src="http://player.youku.com/embed/XMTU4MTY4OTg5Mg==" frameborder=0 allowfullscreen></iframe>
</div>

6.使用相对URL

​ 使用相对URL和使用相对协议有点类似,不同的是,相对协议只是省略了http和https协议头的部分,而相对url,也叫相对地址或相对路径,不仅可以省略协议头http和https,还可以省略双斜杠//,及后面的域名!(前提是资源在本地)文章来源地址https://www.toymoban.com/news/detail-653068.html

到了这里,关于https页面中引入http资源的方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WebView引入的页面如何实现交互。通过webview方式嵌套在小程序里面的页面如何实现保存到相册的功能

    通过 WebView 方式嵌套在小程序中的页面,保存图片到相册的功能需要借助 WebView 的内部通信机制。以下是实现步骤: 1. 小程序端,给 WebView 组件添加一个监听事件,以便接收来自 WebView 页面的消息: ```html web-view src=\\\"your-website.com domain name is for sale. Inquire now.\\\" bindmessage=\\\"handle

    2024年01月17日
    浏览(38)
  • https网站加载http资源问题

    前言:最近项目对接了一个第三方的平台、我们需要展示第三方平台返回来的图片资源、由于我们的服务器设置为了https、但是第三方平台返回的图片链接是 http 资源。所以就出现了图片无法加载出来的问题,在此记录一下问题的解决方案。 原因: 这是浏览器的规则限制了、

    2024年02月05日
    浏览(42)
  • 在https网站中加载http资源

    https中加载http资源,如果该资源https也有,直接替换就是,如果没有,如果按照网上的做法大概率是不奏效。言归正传,在一位C友文章中看到了利用nginx来做代理来实现访问http资源之后,我自己也做了尝试。 参考链接​​​​​​https://blog.csdn.net/weixin_48030265/article/details/13

    2024年03月19日
    浏览(82)
  • 关于https页面使用ifream嵌套http页面

    2024年02月14日
    浏览(32)
  • 内网穿透,远程网盘,网站外挂资源,可嵌入到页面的网盘资源解决方案

    这是一个我个人写的库,主要实现的是基于tcpclient的网站外扩网盘的解决方案,可以使用家用网络外挂个人电脑中的资源到自己的网站上,已经上传nuget,大家可以直接在nuget包管理中搜索到,直接搜索ZmjNetDisk即可,下面介绍具体的使用方式: 另外一提这个库做的比较的个人

    2024年03月16日
    浏览(83)
  • vue 弹出框 引入另一个vue页面

    为什么要这么做,适用于在一个页面逻辑比较多的时候,可以搞多个页面,防止出错 index页面点击解约按钮,弹出框 进入jieyue.vue 核心代码 代码截图 jieyue.vue就是常规代码了 参考博客

    2024年02月12日
    浏览(41)
  • Nginx配置https网站访问第三方节点的http资源

    https网站无法直接下载http网站的文件。解决思路有以下几种情况:1.两个网站都同时改为http或https。2.通过nginx转发。3.通过后端java代码获取对方网站的文件流然后把流返回给前端 本文介绍如果通过nginx转发访问http网站 配置规则一: 这样配置之后,本地网站比如是:访问htt

    2024年02月16日
    浏览(47)
  • 解决重定向页面时,https变成http问题

    问题场景:请求某个接口后,处理完相关逻辑后需要重定向到另一个页面,请求的地址是https开头,但经过重定向后,地址变成了http,导致后续请求接口不通,全部报404 解决方法: 启动类中添加如下代码

    2024年02月11日
    浏览(62)
  • 解决页面Http请求自动变成了Https请求问题

    页面上的所有http请求地址变了https请求地址,根源在于下面一行代码: 页面上存在这一行meta,等同于在header中添加 Content-Security-Policy 为true,会将页面中的http请求变成https请求 在页面中删除此行代码,就解决了以上问题 meta http-equiv=\\\"Content-Security-Policy\\\" content=\\\"upgrade-insecure-r

    2024年02月11日
    浏览(43)
  • 【嵌入式资讯】Arm 通过引入 Keil MDK 版本 6 将嵌入式软件开发提升到一个新的水平

            随着物联网设备变得越来越智能,开发人员面临着日益增加的软件复杂性,这需要新的开发流程来创建优化的 ML 模型和高效的设备驱动程序。因此,我们为生态系统提供的软件开发平台和工具必须与我们的处理器路线图一起发展。Keil 微控制器开发套件 (Keil M

    2024年02月15日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包