首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学员投稿 | iframe 解决跨域

来解决这个问题 基本原理 1、需要三个页面 两个同域(a.com)的页面,一个和接口同域的页面(b.com) 其中一个页面是父页面,也就是真正的内容页,展示数据的 另外两个作为子页面,是辅助父页面请求跨域数据用的...,不会显示在页面中 2、利用全局变量 window.name 存储数据 父子页面利用 window.name 进行通信,但是前提是同域 当父子页面不同域的时候,父子无法访问对方 window.name ...隐藏 iframe 由页面B跳转到 a.com 下另一个辅助页(页面C) 4、页面C读取到B存放的 window.name,然后传递给父页面A 5、父页面A 拿到数据,用于展示在页面上 简单模拟 现在我启动了两个服务... 下有 b.html b.html 也是辅助页,用于请求数据(以下简称B) 内容页 A 在 A 中,使用 iframe 嵌入了B,并且全局设置了一个函数 getData 这个函数的作用是,为了给C页面调用...,在父页面中注册一个函数,给子页面传递数据用 但是这个函数注册就有点意思了,因为是全局的,非常害怕全局污染和重名,所以这里弄了一个随机生成函数名的函数 getFunctionName,如下 function

2.5K30

【JS应用】Iframe 解决跨域

来解决这个问题 基本原理 1、需要三个页面 两个同域(a.com)的 页面,一个和接口同域的 页面(b.com) 其中一个页面是父页面,也就是真正的内容页,展示数据的 另外两个作为子页面,是辅助父页面请求跨域数据用的...,不会显示在页面中 2、利用全局变量 window.name 存储数据 父子页面利用 window.name 进行通信,但是前提是同域 当 父子页面不同域的时候,父子无法访问对方 window.name...数据,用于展示在页面上 简单模拟 现在我启动了两个服务 1、localhost:3001 下有 a.html 和 c.html a.html 是内容页,需要使用数据的终端页(以下简称A) c.html...是辅助页(以下简称C) 2、localhost:3002 下有 b.html b.html 也是辅助页,用于请求数据(以下简称B) 内容页 A 在 A 中,使用 iframe 嵌入了 B,并且全局设置了一个函数...funcName = getFunctionName() 主要作用还是像我们模拟中的一样,在父页面中注册一个函数,给子页面传递数据用 但是这个函数注册就有点意思了,因为是全局的,非常害怕全局污染和重名

15.3K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    vivo 商品中台的可视化微前端实践

    在设计商品中台的前端系统时,我们使用了微前端和可视化技术,其可以达到如下效果: 可视化技术可以让各个业务方的运营等相关人员,直观的看到其配置的数据在页面上的展示效果; 微前端可以帮助商品中台更快更好的适配到各个业务方的项目中...图中左侧的可视化区域是一个标准的 h5 页面,可以把它看成一个子页面,它与外层的父页面在 ui 上是完全隔离的,同时在数据上又是共享的。 下面我将会对可视化技术原理做完整阐述,请大家继续往下看。...这里,我结合商品中台配置可视化区域做一个通俗解释: 首先我们把 vue 项目设置为多页应用,页面分别是商品预览页、商品管理页; 其次,调整 vue 入口,每个页面对应一个入口; 编写 iframe 组件和沙箱...这是因为 vue 的单例机制,子窗口(商品管理页)由父窗口(商品管理页) new Vue 渲染的, 因此在子窗口中使用 use 、 filter 、 mixin 、 全局指令 、 全局组件等, 会覆盖父窗口...原因:iframe 预览页面为商品中台域名,而子应用接入主应用后为主应用域名,从而导致跨域。

    1.2K50

    vivo 悟空活动中台 - 微组件状态管理(下)

    但是 prop.vue 是异步加载的,只有当对应 code.vue组件在【编辑器中】被选中进行配置时,才会按需动态加载在属性面上。 当【编辑器】中删除组件时,被删除的组件要能够感知。...假如代码如下,父窗口暴露store对象给子iframe访问,在子窗口中获取数据,能保持数据的响应式嘛?...因为 iframe 的关系父窗口的Dep.target获取值为null,导致父的dep对象收集不到子iframe中的watcher,阻断了响应式,关键代码如下图: 8、守正出奇 我们能不能将中断的父子窗口的依赖收集...神器Vue.observable来帮忙 通过在子 iframe 中使用 Vue.observable 添加对父 store 的 state的包装,可以实现在子 iframe 保留一份响应式 Dep 的收集...8.1 抽象parent-store-mixin 通过 parent-store-mixin 将父窗口的store挂载在子 iframe窗口内vue对象的$pstore属性上,方便 在vue组件内获取父窗口的

    1.7K40

    基于 iframe 的微前端框架 —— 擎天

    (2)主应用是擎天框架的关键部分,主要是由以下两部分组成:路由引擎:实现浏览器地址栏与子应用展示隐藏的协调控制,用来控制用户第一次进入展示某个应用,当用户切换页面时需同步浏览器地址栏(方便用户复制,再次进入同一页面...(3)子应用集合层该层为系统提前设置好的子应用集合,子应用由全屏iframe加载,同一时刻仅有一个子应用处于可视状态,其他子应用隐藏。当需要应用切换时,隐藏当前应用,显示需要展示的应用,瞬间切换。...图片五、擎天框架实现擎天框架突破了 iframe UI不同步、URL不同步、数据不共享以及加载慢等问题,并将iframe作为页面容器存在,在实现硬隔离的同时做到了子应用瞬间切换,解决了微前端框架一直以来的通病...等方法,当监听到子应用使用以上方法进行路由切换时,会同步到父框架进行操作。...当某个子应用需要修改共享数据时,调用syncTopMutation方法进行修改,修改成功后擎天通过syncTopStore分发给各个子应用,保证共享数据一致。

    1.6K90

    我所理解的微前端

    当发现使用微前端反而使效率变低,简单的变更复杂那就说明微前端并不适用。 如何做微前端 微前端的思想其实有点类似于 iframe,起一个框架,做一个导航,然后嵌入不同的页面。...单纯根据对概念的理解,实现微前端的就是将应用进行拆解和整合,通常是一个父应用加上一些子应用,主应用管理各个子应用。...HTML 内容 append 到基座应用中留给微应用的展示区域,当微应用切换走时,同步卸载这些内容,这就构成的当前应用的展示流程。...在应用卸载后,同步卸载页面上对应的link和style即可 使用Web Components(shadowDom)技术,Web Components能够填入隔离 CSS 作用域。...3.微前端的消息通信 消息订阅(pub/sub)模式的通信机制 在基座应用中会定义事件中心Event,每个微应用分别来注册事件,当被触发事件时再有事件中心统一分发,这就构成了基本的通信机制 如果使用的是

    59050

    前端和前端联调的各种姿势,了解一下

    在一个大需求里面,按照模块化分工的话,显然iframe里面的功能由一个人负责,主页面由另一个人负责。...不同的人负责的东西同时展示在页面上交互,那么两个前端开发的过程中必然有联调的过程 背景:父页面index.html里面有一个iframe,iframe的src为子页面(另一个html的链接),下文都是基于此情况下进行...Web Worker 中可用。...子页面调用父页面的方法,因为有parent这个全局属性,那么父页面的window也是可以拿到的了 // 父页面 document.querySelector("iframe").contentWindow.componentDidMount...的window注入方法,来设计一个简单的通信模块 父页面主动调子页面, 子页面被父页面调 父页面被子页面调,子页面调父页面 父页面下,给window挂上parentPageApis对象,是子页面调用方法的集合

    1.5K10

    Linux:进程地址空间、进程控制(一.进程创建、进程终止、进程等待)

    ) 具体来说,权限字段通常包含以下几种权限: 读权限(r):当某个页表项的读权限被设置时,拥有该页表项的进程可以读取该页面上的数据。...如果读权限未被设置,任何试图读取该页面的操作都会引发异常或错误。 写权限(w):写权限决定了进程是否可以修改页面上的数据。如果页表项的写权限被设置,进程可以对该页面进行写操作。...除了读和写权限外,页表的权限字段还可能包含其他类型的权限,例如执行权限(x),它决定了进程是否可以在该页面上执行代码。在某些系统中,还可能存在特殊的权限字段,如用于控制页面共享、缓存策略等的字段。...执行fork系统调用:当父进程调用fork()函数时,操作系统会处理这个系统调用,完成上述操作,并返回相应的值给父进程和子进程。父进程收到的是子进程的PID,而子进程收到的是0。...5.进程等待 5.1必要性 在Unix/Linux系统中,当子进程退出时,它的进程描述符仍然保留在系统中,直到父进程通过某种方式获取其退出状态。

    16200

    油猴脚本从编写到检测

    油猴脚本记(含检测) 写脚本 模拟爬取市面上网站(淘宝、京东、美团等)的页面内容 油猴脚本是通过JS来编写,我也才接触只是对dom进行操作来完成 首先是@match需要设置,就是用来说明脚本在哪个页面执行...那么脚本就设置在列表页进行 为了直观显示,将在列表页创建一个iframe用来显示爬取的详情页 模拟用户去点击每一个商品操作,这样子做轮询 实现 列表页:获取当前的页面,获取商品数,获取每个商品的链接...创建iframe,加载商品的链接 两个函数做递归,在加载第二个商品时候需要将第一个iframe删除 // ==UserScript== // @name (自定义随意) // @namespace...setTimeout()直接使用可能不生效需要下成如下样式: setTimeout(function(){xxxxxxxxxxx},3000); 检测脚本 脚本的运行原理 油猴脚本是在沙盒里执行用户脚本...所以如果要对脚本进行检测,没有像上面代码这样子向页面中植入iframe的话,通过去检测dom和window是无法检测出使用油猴脚本的。

    5.1K10

    微前端学习笔记(3):前端沙箱之JavaScript的sandbox(沙盒沙箱)

    在 iframe 中运行的脚本程序访问到的全局对象均是当前 iframe 执行上下文提供的,不会影响其父页面的主体功能,因此使用 iframe 来实现一个沙箱是目前最方便、简单、安全的方法。...例如,这将允许一个第三方的沙箱环境运行广告开启一个登陆页面,新页面不强制受到沙箱相关限制。allow-presentation: 允许嵌入者控制是否iframe启用一个展示会话。...  parent.postMessage(func(e.data))});// 父页面接收 iframe 发送过来的消息parent.addEventListener('message', function...将这套机制封装进wujie框架于子应用完全独立的运行在iframe内,路由依赖iframe的location和history,我们还可以在一张页面上同时激活多个子应用,由于iframe和主应用处于同一个...当沙箱活跃时,读操作(get)会优先从 fakeWindow 中获取属性值,所有写操作(set)只会影响 fakeWindow,而不影响全局 window 对象。

    62310

    web跨域解决方案

    根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不能访问在google.com域名下的页面内容;甚至不同的子域名之间的页面也不能通过JavaScript代码互相访问。...我们举例说明:   比如一个黑客,他利用iframe把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名和密码登录时,如果没有同源限制,他的页面就可以通过javascript读取到你的表单中输入的内容...它们是:js脚本,css样式文件,图片,像淘宝等大型网站,肯定会将这些静态资源放入cdn中,然后在页面上连 接,如下所示,所以它们是可以链接访问到不同源的资源的。...,这 个页面与它里面的iframe框架是不同域的,所以我们是无法通过在页面中书写js代码来获取iframe中的东西的。   ...缺点: ie8以前不支持 window.name:   主要是应用当frame的页面跳到其他地址时,其window.name值保持不变的原理。兼容性好。需要照顾落后的浏览器时,首选。

    2.8K100

    那些年前端跨过的域

    )动态创建 iframe 标签,src 属性指向数据页面(http://b.com/data.html) 为 iframe 绑定 load 事件,当数据页面载入成功后,把 iframe 的 src 属性指向同源代理页面...(也可以是空白页) 当 iframe 再次 load,即可以操作 iframe 对象的 contentWindow.name 属性,获取数据源页面设置的 window.name 值 注意:当数据源页面载入成功后...window.name 还有一种实现思路,就是 数据页在设置完 window.name 值之后,通过 js 跳转到与父页面同源的一个页面地址,这样的话,父页面就能通过操作同源子页面对象的方式获取 window.name...iframe 标签是一个强大的标签,允许在页面内部加载别的页面,如果没有同源策略那我们的网站在 iframe 标签面前基本没有安全可言。...这是因为主调用页可以修改数据页的 hash 值,但是数据页不能通过 parent.location.hash 的方式修改父页面的 hash 值(仅 IE 与 Chrome 浏览器不允许),所以只能在数据页中再加载一个代理页

    2K60

    在新窗口中打开页面?小心有坑!

    背景 产品需求来啦:点击页面上某个东西,要在新窗口中打开一个页面,注意!要在新窗口中打开。你呵呵一笑,太简单了: 打开的页面地址是固定的?直接a标签加上target="_blank"属性搞定。...回到例子1,可以自己动手尝试,在新打开的那个页面中,打开console, 输入opener,可以看到这个对象,正是打开本页面的父页面的窗口对象。...例子1就是利用这个方式,将父窗口的链接悄悄地替换成了钓鱼页面的地址。刚好父窗口的原始页面没有做防止被iframe嵌入,可以简单地通过iframe做一个极真实的钓鱼页面。...在例子2中,新页面中有一个定时器,每隔一段时间就有一个持续的循环,这个循环在阻塞新页面本身的js线程的同时,也阻塞了opener(也就是打开新页面的父窗口)里的js线程。...如果再搞得狠一些,父窗口中的页面交互可以寸步难行。 为什么新窗口中的页面会影响父页面的线程呢?chrome不是每个标签页一个单独的进程?然后进程内包含若干线程吗?

    4K10

    在新窗口中打开页面?小心有坑!

    背景 产品需求来啦:点击页面上某个东西,要在新窗口中打开一个页面,注意!要在新窗口中打开。你呵呵一笑,太简单了: 打开的页面地址是固定的?直接a标签加上target="_blank"属性搞定。...回到例子1,可以自己动手尝试,在新打开的那个页面中,打开console, 输入opener,可以看到这个对象,正是打开本页面的父页面的窗口对象。...例子1就是利用这个方式,将父窗口的链接悄悄地替换成了钓鱼页面的地址。刚好父窗口的原始页面没有做防止被iframe嵌入,可以简单地通过iframe做一个极真实的钓鱼页面。...在例子2中,新页面中有一个定时器,每隔一段时间就有一个持续的循环,这个循环在阻塞新页面本身的js线程的同时,也阻塞了opener(也就是打开新页面的父窗口)里的js线程。...如果再搞得狠一些,父窗口中的页面交互可以寸步难行。 为什么新窗口中的页面会影响父页面的线程呢?chrome不是每个标签页一个单独的进程?然后进程内包含若干线程吗?

    5.3K21

    从一道CTF学习Service Worker的利用

    在 auto_reg_var 函数中,通过 location.search 获取了请求参数,并通过 window[key] = value 进行了赋值,此处存在变量覆盖漏洞。...但Appcache有相当多的缺陷,对于整站中的多页缓存来说支持比较差,而Service Worker用来作为其替代。...,这种跨域方法在实际开发中很常见,为了使数据能够跨域传输,开发者常常把两个不同子域的document.domain设置为共同的父域,通过iframe就能跨域操作,但也带来了安全隐患。...注意到跨域页面上只有一个光秃秃的跨域操作,并没有其他操作,但作为媒介用以设置其子域-登录验证api上的SW脚本(设置脚本时访问的是跨域页面而没有访问劫持页面) 利用条件:1.baidu.com上发现了XSS...,2.baidu.com上存在跨域操作:document.domain = 'baidu.me'并且子域下存在JSONP(路径需要跟盗取的信息页面在同一子域)或能够上传js的地方,就可以完成JSONP子域下的持久化

    1.2K40
    领券