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

postMessage使用

大家好,又见面了,我是你们朋友全栈君。 postMessage是H5API,用来解决跨页面通信postMessage使用分为发送方和接收方。...发送方代码用法如下: otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow是接收方window对象。...如果接收方窗口协议、主机地址或端口这三者任意一项不匹配targetOrigin提供值,那么消息就不会被发送。该参数也可以是‘*’,表示对接收方域没有任何限制。...data是发送方发送message,origin是发送方所属域,source是发送方window对象引用。...案例以后在进行补充… 更多详情请看MDN,链接地址: https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage 发布者:

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

    窗口间通信方案——postMessage

    postMessage 是 html5 引入 API,postMessage 方法允许来自不同源脚本采用异步方式进行通信,其实同源不同页面的脚本也可以采用 postMessage 方法进行通信。...targetWindow.postMessage(message, targetOrigin, [transfer]) targetWindow:目标窗口全局对象引用,比如 iframe contentWindow...message:将要发送到目标窗口数据,可以是任何类型数据。它将会被结构化克隆算法序列化。这意味着可以不受什么限制将数据对象安全传送给目标窗口而无需自己序列化。...source:对发送消息窗口对象引用,可以使用此来在具有不同 origin 两个窗口之间建立双向通信。 安全 发送数据窗口,需要指定精确目标窗口 origin ,而不是 * 。...接收数据窗口,需要通过 event.origin 判断发送数据窗口身份。 实例 两个窗口之间通信

    19510

    postMessage 消息传递

    这些问题之前都有解决办法,但是现在html5引入messageAPI可以更方便、有效、安全解决这些问题。        ...postMessage()方法允许来自不同源脚本采用异步方式进行有限通信,可实现跨文本档、多窗口、跨域消息传递。...参数         postMessage( data , origin , [transfer] ),接受两个参数         1.data:​需要传递数据,html5规范中该参数可以是JavaScript...发送消息         otherWindow.postMessage( data , origin , [transfer] )          otherWindow为其他窗口一个引用,比如iframe...数据字段 origin : 调用postMessage 时消息发送方窗口origin source : 对发送消息窗口对象引用,可用来在具有不同origin两个窗口间建立双向通信。

    1K30

    postMessage实现跨域通信

    跨文档通信就是我们国内更为熟知HTML5 window.postMessage()应用那种通信;通道通信也被称为”MessageChannel”....发送核心JS代码如下: window.parent.frames[1].postMessage(message, '*'); 说明: window.parent.frames[1]指就是demo正页中第二个...然后使用postMessage方法发送数据。 postMessage方法支持两个参数,具体参考下表: message发送数据targetOrigin发送数据来源。...postMessage方法中message参数不仅仅可以是字符串,结构对象、数据对象(如:File和ArrayBuffer)或是数组都是可以。...消息发送来自收到打开页面的'ready'通信信息。 代码稍稍长了点,这里就不展示了。主demo页面JS代码都有,且高亮显示了,有中文注释,相信不难理解

    1.6K20

    JS】504- HTML5 之跨域通讯(postMessage

    如何不同域传登录数据就是本文可以了解到了。 很多情况下,我们受到浏览器安全策略限制。如何能规避此限制,并且能安全使用跨域通讯,这就不得不介绍一下 postMessage 了。...window.postMessage() 方法提供了一种受控机制来规避此限制,只要正确使用,这种方法就很安全。...window.postMessage() 方法时调用页面的当前状态;4.source 属性记录调用 window.postMessage() 方法窗口信息。...caniuse 通过上面的图片,我们可以看出来,几乎所有的浏览器都支持了 postMessage,所以放心大胆去使用吧。...我们举个例子,当用 postMessage 传送密码时,这个参数就显得尤为重要,必须保证它值与这条包含密码信息预期接受者 origin 属性完全一致,来防止密码被恶意第三方截获。

    1.8K10

    postMessage 还能这样玩

    因为 Postmate 通信基础是基于 postMessage,所以在介绍如何握手之前,我们先来简单了解一下 postMessage API。...2.1 postMessage 简介 对于两个不同页面的脚本,只有当执行它们页面位于具有相同协议、端口号以及主机时,这两个脚本才能相互通信。...2.1.1 postMessage() 语法 otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow:其他窗口一个引用...以上流程图对应代码相对比较简单,这里阿宝哥就不贴详细代码了。感兴趣小伙伴可以阅读 src/postmate.js 文件中相关内容。...request 消息,在子页面中会通过 resolveValue 方法来获取返回结果,然后通过 postMessage 来返回结果: // src/postmate.js export class ChildAPI

    2K31

    关于html5PostMessage用法总结

    大家好,又见面了,我是你们朋友全栈君。 大家都知道,网页之间传递数据可以使用ajax请求来完成,今天我总结下我学习postMessage是如何完成跨页面请求数据呢?...首先,postMessage是html5新增一个解决跨域一个方法。那他是如何使用呢?这里我把一个案例分享出来把。看下面的代码: test.html <!...注意:postMessage写法,postMessage之前写是你要通信window对象(也就是你要向谁通信),此时window.parent权限仅限于此,不能在像同域似的,进行获取父级DOM...元素,否则浏览器会报错,提示你不能进行跨域访问,我们再来看postMessage中所接收参数,第一个参数就是你要像另外一个窗口传递数据(只能传字符串类型),第二个参数表示目标窗口源,协议+主机+端口号...(data, 'http://localhost:8080/'); // 若父页面的域名和指定不一致,则postMessage失败 // parent.postMessage(data, '*

    71620

    PostMessage严谨用法要这样做

    PostMessage还有两点要注意,否则容易引发低概率问题,很难排查。 第一, PostMessage调用会失败,比如消息队列限制是2000(系统注册表配置),队列如果已满是无法再次发送消息。...第二, PostMessage调用完下一行代码与消息处理代码,它们执行顺序,由于多线程切换无法预期,所以谁先谁后都有可能。...先看一段不严谨实现,A线程调用MoveWindow接口给hWnd发送自定义消息WM_MOVE_WINDOW让hWnd所在B线程调用MoveWindow系统API移动窗口。 ?...这段代码存在两个问题: 第一, PostMessage没有判断失败,如果失败WM_MOVE_WINDOW消息将不会被处理,pRect对象将不会释放,内存泄漏。...第二, PostMessage调用下一行代码打印日志使用pRect对象,此时WM_MOVE_WINDOW消息可能已经处理完,pRect对象已被释放成野指针。 严谨实现 ?

    2.7K40

    如何利用postMessage窃取编辑用户Cookie信息

    某天,当我在做某个项目的漏洞测试时,在登录一些HTTP请求记录中,我发现了一种利用postMessage方式窃取和编辑用户Cookie方法。...postMessage介绍 相信大家都听过不同窗口之间通信、当前窗口与内部iframe框架通信以及一些跨域技巧,window.postMessage功能就是允许在两个客户端窗口/frames间发送数据信息...具体请参考postMessage详细介绍。...举个例子,比如我们这有一个包含js代码页面,用来监听记录传入消息,其中js代码如下: function messages(event) { console.log...仔细分析其中 sync.html 文件,其中包含了一个postMessage方法,它向变量名为wOrigin目标发送了消息,如下: window.parent.postMessage(JSON.stringify

    1.6K40

    通过postMessage进行跨域通信

    这里首先想到就是把h5页面用iframe内嵌到pc网页中,然后pc通过postMessage方法,把变化数据发送给iframe,iframe内嵌h5通过addEventListener接收数据,再对数据做响应式变化...这里总结一下postMessage使用,api很简单: otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow是目标窗口引用...在发送消息时候,如果目标窗口协议、主机地址或端口这三者任意一项不匹配targetOrigin提供值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。...document.getElementById('myIFrame').contentWindow; iframe.postMessage('hello world', 'http://yourhost.com...this.actions[type] = cb; return this; } emit = (type, value) => { this.win.postMessage

    72840

    iframe+postMessage实现跨域通信

    ,存在跨域问题,这时发现HTML5新增了一个API-window.postMessage(),于是就决定用iframe结合window.postMessage()实现 在页面中嵌入一个iframe,将图片管理系统嵌入到当前管理系统中...,结合window.postMessage()实现跨域通信 项目背景 该管理系统基于React.js搭建,在此简称为A页面,地址为http://www.blogoog.com:8000 图片管理系统基于...Vue.js搭建,在此简称为B页面,地址为http://www.blogoog.com:8088 具体实现 参考资料 iframe-MDN:https://developer.mozilla.org/zh-CN.../Window/postMessage 1、A页面使用到语法 window.postMessage() otherWindow.postMessage(message, targetOrigin,...,再进行postMessage跨域通信 一定要对origin做判断,去掉不是来自我们目标窗口origin,防止来自其他origin攻击 着重注意window.postMessage()中window

    5.3K40

    关于html5PostMessage用法总结(转载)

    大家都知道,网页之间传递数据可以使用ajax请求来完成,今天我总结下我学习postMessage是如何完成跨页面请求数据呢?...首先,postMessage是html5新增一个解决跨域一个方法。那他是如何使用呢?这里我把一个案例分享出来把。看下面的代码: test.html <!...注意:postMessage写法,postMessage之前写是你要通信window对象(也就是你要向谁通信),此时window.parent权限仅限于此,不能在像同域似的,进行获取父级DOM...元素,否则浏览器会报错,提示你不能进行跨域访问,我们再来看postMessage中所接收参数,第一个参数就是你要像另外一个窗口传递数据(只能传字符串类型),第二个参数表示目标窗口源,协议+主机+端口号...(data, 'http://localhost:8080/'); // 若父页面的域名和指定不一致,则postMessage失败 // parent.postMessage(data, '*

    52420

    安全研究 | 由postMessage导致Facebook账户劫持DOM XSS

    利用第一个漏洞可以通过postMessage方式从facebook.com网站中发送跨域(cross-origin)消息,存在漏洞路径会接收攻击者在请求参数中构造控制内容,同时会以postMessage...其中一个有意思参数为’type’,如果把其参数值从正常’i’更改为’rp’后,就能用postMessage方法与打开窗口通信(正常i参数调用方法为window.parent.PaymentsFlows.processIFrame...version=X’,然后触发一个postMessage方式消息发送(此前另一个安全研究者也曾在该页面中发现了另一个厉害漏洞),在此行为中page_proxy页面代码片段为: 该代码片段主要完成两件事情...如果其’appTabUrl’URL链接以http/https开头,则后台不会对该URL进行安全验证,因此,我们可以在此引入JS等其它形式触发XSS!.../redirect.php)中postMessage方法来修复了该漏洞,另外增加了appTabUrl中https协议URL白名单安全验证。

    81110

    详解使用postMessage解决iframe跨域通信问题

    但这样似乎有点小题大做了,有没有更方便快捷方法呢? 在window对象下有个postMessage方法,是专门用来解决跨域通信问题。...关于postMessage详细介绍请戳这里,不过MDN文档太详细了,导致有些同学看完还是一脸懵逼,下面我们就来看看怎么用postMessage实现iframe跨域通信,当你会用了之后再回去看文档,感觉是完全不同...window对象,然后调用postMessage方法,相当于给子页面发送了一条消息。...postMessage方法第一个参数是要发送数据,可以是任何原始类型数据。...postMessage方法第二个参数可以设置要发送到哪个url,如果当前子页面的url和设置不一致,则会发送失败,我们设置为*,代表所有url都允许发送。

    4.2K21
    领券