iframe 嵌套第三方页面出现的问题

我们需要通过一个接口获取被嵌套的地址。
然后将改地址赋值给iframe的src中,代码如下
<template>
<div>
<iframe
:src="httpIframeUrl"
class="whiframe"
scrolling="yes"
></iframe>
</div>
</template>
<script lang="ts">
import { defineComponent, getCurrentInstance, ref } from 'vue'
import { useRoute } from 'vue-router'
export default defineComponent({
setup() {
let route = useRoute()
let httpIframeUrl = ref('')
if (route.query.processInstanceId) {
this,$apihttps.then(res => {
//返回后将值赋值到iframe的src
httpIframeUrl.value = res
})
.catch(() => {
window.$message.error('地址未获取到')
})
} else {
window.$message.error('未获取到流程实例')
}
return { httpIframeUrl }
},
})
</script>
<style lang="scss" scoped>
.whiframe {
width: 100%;
height: 100%;
}
</style>

出现了意外的情况

我以为这样就万事大吉了,可以愉快的下班!
可是意外发生了~~~呜呜
无法打开页面,
我根据提示添加了
sandbox="allow-scripts allow-top-navigation allow-same-origin allow-popups"
<iframe
:src="httpIframeUrl"
class="whiframe"
scrolling="yes"
sandbox="allow-scripts
allow-top-navigation
allow-same-origin
allow-popups"
></iframe>
sandbox的几个常用属性
allow-scripts==>表示允许被嵌套的子页面执行script
allow-top-navigation==>允许 iframe 内容从包含文档导航(加载)内容。
allow-forms==>允许表单提交
allow-same-origin==>允许不同源【处理跨域】
本以为可以溜之大吉了,结果......

又又出现意外了

Chrome 80以及以上的版本中,重新恢复SameSite cookie策略.
只要在Chrome80浏览器中iframe是携带了cookie,
这个cookie在iframe中会被丢失,从而依赖cookie的接口会出现问题~~
开解决办法:后端设定 Set-Cookie 为 SameSite=None; Secure
并且要在HTTPS协议下该Cookie才会被发送
有些的小伙伴会说:我的火狐浏览器没有,是这样的!
内核是谷歌的浏览器80版以上就会出现这样的情况。
这样处理后就ok了,然后就下班了,哎!

iframe 进行延迟加载

<iframe src="your url"
loading="lazy"
width="100%"
height="100%"></iframe>
机制小伙伴发现了多了loading="lazy" loading目前已经支持三种属性值
lazy==>延迟加载的理想选择。
eager==>立即加载(非延迟加载的理想选择)
auto=>由浏览器来决定是否延迟加载

iframe 下载文件

<iframe sandbox="allow-downloads"></iframe>
allow-downloads==>允许下载文件
我看见有的小伙伴在使用
allow-downloads-without-user-activation,个人不建议使用。
因为他表示没有征求用户同意的情况下下载文件。

iframe下打开新窗口的正确姿势

// 子页面使用这两种方式打开会出现的问题是:
// 他们会将父页面的窗口'干掉',然后打开窗
top.location.href = location.href;
parent.location.href='http://www.baidu.com';
// 正确的使用方式
// 下面这种方式会将在父页面的容器下打开窗口。
window.location.href="http://www.baidu.com"

你对iframe知道多少的更多相关文章

  1. 完美判断iframe是否加载完成

    var iframe = document.createElement("iframe"); iframe.style.width = "265px"; ifr ...

  2. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  3. 页面嵌入dom与被嵌入iframe的攻防

    1.情景一:自己的页面被引入(嵌入)至别人的页面iframe中 if(window.self != window.top){ //url是自己页面的url window.top.location.hr ...

  4. iframe用法

    <iframe src="http://caiyanli.top/" height="500"  width="500" frameb ...

  5. 如何获取url中的参数并传递给iframe中的报表

    在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...

  6. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  7. ASP.NET 页面禁止被 iframe 框架引用

    两个站点: a.sample.com b.sample.com a.sample.com 站点中的一段示例 JS 代码: var iframe = document.createElement(&qu ...

  8. 父页面操作iframe子页面的安全漏洞及跨域限制问题

    一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域 ...

  9. 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/5990262.html 前言: 在开发网站时,尤其是管理后台,我们经常会使用iframe作为内容窗 ...

  10. 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader

    发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...

随机推荐

  1. 为啥JS/TS里都会有"use strict"

    摘要:在日常JS/TS项目开发过程中,经常会在文件开头看到"use strcit"字样,这里的"使用严格"是什么意思? 本文分享自华为云社区<JS/TS里 ...

  2. DarkMode(4):css滤镜 颜色反转实现深色模式

    在<DarkMode(1):产品应用深色模式分析>提过,单纯反转是不行的.但是,把不需要反转的,在反转过来.或者用js,给想要反转的,加上反转样式,再对其他的做微调.这样个人觉得,开发成本 ...

  3. 字节跳动基于DataLeap的DataOps实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 本文根据 ArchSummit 全球架构师峰会(深圳站)来自抖音数据研发负责人王洋的现场分享实录整理而成(有删减) ...

  4. ByteHouse+Apache Airflow:高效简化数据管理流程

    Apache Airflow 与 ByteHouse 相结合,为管理和执行数据流程提供了强大而高效的解决方案.本文突出了使用 Apache Airflow 与 ByteHouse 的主要优势和特点,展 ...

  5. 大银行数字化升级之后,火山引擎 VeDI 这次要把能力带给中小金融机构

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 数据技术是金融行业数字化转型的重要动力. 近年来,各大银行在全面推进数据技术建设上动作频频.比如,建设银行深化平台经营,依 ...

  6. 多图预警,DreamBooth 微调黑客松结果发布啦!

    去年 12 月底,我们面向全球的开发者举办了 DreamBooth 编程马拉松活动.通过 DreamBooth,你可以使用少量的图像对文生图模型进行微调,将你「喂给」模型的图片信息进行命名,就可以通过 ...

  7. C-Shopping基于Next.js,开源电商平台全新亮相

    嗨,大家好!欢迎来到C-Shopping,这是一场揭开科技面纱的电商之旅.我是C-Shopping开源作者"继小鹏",今天将为你介绍一款基于最新技术的开源电商平台.让我们一同探索吧 ...

  8. HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java

    Viterbi 维特比算法解决的是篱笆型的图的最短路径问题,图的节点按列组织,每列的节点数量可以不一样,每一列的节点只能和相邻列的节点相连,不能跨列相连,节点之间有着不同的距离,距离的值就不在 题目背 ...

  9. Codeforces Round #700 (Div. 2) A ~ D1个人题解

    Codeforces Round #700 (Div. 2) 比赛链接: Click Here 1480A. Yet Another String Game 因为Alice是要追求小,Bob追求大值, ...

  10. idea调式技巧汇总

    调式进阶1: https://blog.csdn.net/future_god_qr/article/details/121250865 调式进阶2:(evaluate用法:)快捷键:alt+f8  ...