使用iframe遇到的问题及解决

记录一下使用iframe遇到的bug

动态的iframe src与返回的bug

场景:iframe嵌入页面,有多个tab,切换tab修改iframe的src,显示不同的页面

    <ul><liv-for="tab in tabList":key="tab.tabName"class="tab-item":class="{ activeTab: activeTabName === tab.tabName }"@click="changeTab(tab)">{{ tab.tabName }}</li></ul><iframe:src="iframePath"frameborder="0"width="100%"height="600"id="iframe"</iframe>data() {return {tabList: [{path: "http://www.test.com/firstPage.html",tabName: "hover页面",},{path: "http://www.test.com/secondPage.html",tabName: "关系图谱",},{path: "http://www.test.com/thirdPage.html",tabName: "echart页面 ",},],activeTabName: "hover页面",iframePath: "http://www.test.com/firstPage.html",};},methods: {changeTab(tab) {if(this.iframePath===tab.path) returnthis.activeTabName = tab.tabName;this.iframePath = tab.path;},},

操作步骤:切换tab,然后点击浏览器的返回,就会出现tab与页面内容对不上的情况

原因:修改iframe的src,window.history历史记录中也会添加一条记录(动态切换iframe的src会导致增加一条iframe的历史浏览记录)

解决方案:在切换src的时候把iframe给销毁再重新创建就行了。这样就是一个新的iframe,不会触发他的变更操作,也就不会往window.history中存入记录

这种写法不太优雅,但是可以实现不添加历史记录:

      let parent = document.querySelector(".iframe-parent");let child = document.getElementById("iframe");let newElement = document.createElement("iframe");newElement.src = tab.path;newElement.id = "iframe";parent.replaceChild(newElement, child);

由于vue中的key更改时会重新渲染这个组件,给iframe添加一个key,这样每次切换时,key不一样就会重新创建一个iframe,销毁原来的iframe,这样也能做到不添加历史记录:

    <!-- 加了key会重新渲染iframe,不会往history中添加记录了 --><iframe:src="iframePath"frameborder="0"width="100%"height="600"id="iframe":key="iframePath"></iframe>

http与https的嵌入的问题

将已开发好的页面资源(http)通过iframe嵌入https的协议下,内容没有加载出来,结果发现控制台报错

Mixed Content: The page at 'https://' was loaded over HTTPS, but requested an insecure frame 'http://'. This request has been blocked; the content must be served over HTTPS.

混合内容:在某些情况下,HTTPS 站点也可能包含一些使用明文 HTTP 协议加载的元素,这将形成一个称为混合内容的情形,有时也称为“HTTP over HTTPS”

1》主动混合内容:通过 HTTP 提供的元素或依赖项能够与整个网页交互并对网页进行更改,如js或api请求

2》被动混合内容(显示混合内容):未加密的 HTTP 内容仅限于站点上封装的并且无法与页面其余部分交互的元素,如图片与视频;攻击者可以阻止或替换通过 HTTP 加载的图片,但无法修改页面的其余部分

大多数现代 Web 浏览器都在开发者控制台中提供针对混合内容的警告,并且阻止危险程度较高的混合内容类型。各种浏览器都有自己的一套规则,但一般而言,主动混合内容更有可能会被阻止,被动混合内容仅在开发者控制台中向用户提供混合内容警告

解决方案:

方案1:将外壳链接降为http

方案2:将iframe的内容升级成https协议

方案3:nginx代理

第一种和第二种很容易被否决,因为要申请,流程比较麻烦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统性能提升利刃 | 缓存技术使用的实践与思考

导读 按照现在流行的互联网分层架构模型&#xff0c;最简单的架构当属Web响应层DB存储层的架构。从最开始的单机混合部署Web和DB&#xff0c;到后来将二者拆分到不同物理机以避免共享机器硬件带来的性能瓶颈&#xff0c;再随着流量的增长&#xff0c;Web应用变为集群部署模式&…

Android 控件 - Button

1、Button 1.1、新建 mybutton 模块 在原有项目基础上新建 mybutton项目 1.2、Button基础 在源码中Button继承TextView&#xff0c;所以TextView有的功能Button基本都有&#xff0c;重复功能不在赘述 1.2.1 设置button背景颜色 当使用background不起作用时&#xff0c…

通过SQL即可让监控分析更简单更高效

1.前言 阿里时序时空数据库TSDB最新推出TSQL&#xff0c;支持标准SQL的语法和函数。用户使用熟悉的SQL&#xff0c;不仅仅查询更简单易用&#xff0c;用户还可以利用SQL强大的功能&#xff0c;实现更加复杂的计算分析。 2. 为什么需要用SQL做时序查询&#xff1f; 2.1 SQL拥…

深度好文 | 战“疫”上云正当时:打开云计算的正确姿势

作者 | 马超责编 | Carol封图 | CSDN 付费下载于视觉中国4月29日&#xff0c;谷歌的母公司Alphabet正式发布了2020年第一季度财报&#xff0c;报告显示&#xff0c;Alphabet比去年同期的363.39亿美元增长13%&#xff0c;不计入汇率变动的影响为同比增长15%&#xff1b;在业绩公…

flowable 和 activty工作流 使用视图方案解决系统内部用户、组、用户和组关联

开源项目若依项目集成flowable工作流用户解决方案 -- ---------------------------- -- View structure for act_id_group -- ---------------------------- DROP VIEW IF EXISTS act_id_group; CREATE ALGORITHMUNDEFINED DEFINERrootlocalhost SQL SECURITY DEFINER VIEW ac…

Windows批处理文件(.bat文件和.cmd文件)简单使用

cmd文件和bat文件的区别&#xff0c;从文件描述中的区别是&#xff0c;cmd文件叫做&#xff1a;Windows命令脚本&#xff0c;bat文件叫&#xff1a;批处理文件&#xff0c;两者都可以使用任意一款文本编辑器进行创建、编辑和修改&#xff0c;只是在cmd中支持的命令要多于bat。 …

AnalyticDB for MySQL:PB级云数仓核心技术和场景解析

2019阿里云峰会上海开发者大会于7月24日盛大开幕&#xff0c;本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货&#xff0c;共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能高级技术专家南仙的精彩演讲&#xff…

UML科普文,一篇文章掌握14种UML图

来源 | 如逆水行舟责编 | Carol封图 | CSDN 付费下载于视觉中国什么是UML&#xff1f;UML是Unified Model Language的缩写&#xff0c;中文是统一建模语言&#xff0c;是由一整套图表组成的标准化建模语言。为什么要用UML&#xff1f;通过使用UML使得在软件开发之前&#xff0c…

企业级数据库新型研发模式——数据管理DMS实践

2019阿里云峰会上海开发者大会于7月24日盛大开幕&#xff0c;本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货&#xff0c;共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能技术专家王天振 (为知)的精彩演讲&…

linux-centos7环境搭建

1、下载centos7 官网地址&#xff1a; http://isoredirect.centos.org/centos/7/isos/x86_64/ 阿里云&#xff1a; http://mirrors.aliyun.com/centos/ 以下针对各个版本的ISO镜像文件&#xff0c;进行一一说明&#xff1a; CentOS-7-x86_64-DVD-1708.iso 标准安装版&#x…

揭秘!机器人和你对话时在想什么?

阿里妹导读&#xff1a;为什么聊天机器人越来越普及&#xff1f;聊天机器人不仅可以节省时间&#xff0c;提升效率&#xff0c;还能一天24小时提供服务&#xff0c;更是可以减少误差。聊天机器人背后的问题原理是什么&#xff1f;效率如何提升&#xff1f;就是今天我们要了解的…

知识库使用VIEW视图实现内部用户、组关联关系和flowable内置表打通

文章目录一、SQL1.1. role表新增角色标识1.2. 新增用户角色关系表1.3. 数据复制1.4. 设计视图1.5. 完成版视图二、用户角色关系2.1. 创建UserRole实体类2.2. 持久层接口2.3. 逻辑层2.4. xml映射2.5.三、现代码调整3.1. 新增标识3.2. 删除用户关联条件3.3. 删除角色判断四、工作…

阿里云与A站在一起后,悄悄干了件大事

八月盛夏&#xff0c;“AcFun弹幕视频网站”&#xff08;简称“A站”&#xff09;的视频服务器全面迁移上阿里云&#xff08;此处应有掌声&#xff09;&#xff01; A站去年与阿里云达成此项合作。在迁移过程中&#xff0c;阿里云提供专业技术解决方案团队&#xff0c;为A站建立…

科大讯飞营收破百亿,员工涨薪27%,羡慕这个AI“老大哥”​了!

科大讯飞&#xff0c;中国AI公司“老大哥”&#xff0c;交出2019年成绩单。营收达到100.79亿&#xff0c;首次破百亿&#xff1b;净利润同比增长51.12%&#xff0c;达到8.19亿&#xff0c;日均盈利224万元&#xff0c;创下历史最佳业绩。与此同时&#xff0c;5大厂2020年应届生…

Knative Serving 之路由管理和 Ingress

Knative 默认会为每一个 Service 生成一个域名&#xff0c;并且 Istio Gateway 要根据域名判断当前的请求应该转发给哪个 Knative Service。Knative 默认使用的主域名是 example.com&#xff0c;这个域名是不能作为线上服务的。本文我首先介绍一下如何修改 默认主域名&#xff…

linux-centos7 关机命令、系统目录结构介绍

1、关机命令 关机指令 shutdown; sync # 将数据由内存同步到硬盘中&#xff0c;一般关机前需要同步一下&#xff0c;防止数据丢失shutdown # 关机指令&#xff0c;会在一定时间后关机&#xff0c;我试的是一分钟后关机shutdown -h 10 # 十分钟后关机 shutdown -h 10 # 十分…

SprinBoot2.X 集成 Flowable6.6 工作流引擎

上一篇&#xff1a;SpringBoot2.x Flowable 6.4.2 开源项目 码云开源地址&#xff1a;https://gitee.com/lwj/flow GitHub开源地址&#xff1a;https://github.com/ecnice/flow flowable学习 可以入群&#xff1a;633168411 说明:此项目是我师傅为了帮助更多小伙伴们入门工作流…

OceanBase高可用实践

背景 高可用是构建分布式系统的基石。一方面&#xff0c;出于成本考虑&#xff0c; 分布式系统往往采取比较廉价的硬件&#xff0c;其可靠性相对于小型机、专有硬件有很大的不足&#xff0c; 而分布式系统的规模一般比较大&#xff0c;假如硬件的可靠性只有三个9(99.9%)&#…

咦,拆分个字符串都这么讲究?

来源 | 沉默王二封图 | CSDN 付费下载于视觉中国提到拆分字符串&#xff0c;我猜你十有八九会撂下一句狠话&#xff0c;“这有什么难的&#xff0c;直接上 String 类的 split() 方法不就拉到了&#xff01;”假如你真的这么觉得&#xff0c;那可要注意了&#xff0c;事情远没这…