首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

如何能规避此限制,并且能安全的使用跨域通讯,这就不得不介绍一下 postMessage 了。 一、关于 postMessage window.postMessage() 方法可以安全地实现跨源通信。...window.postMessage() 方法提供了一种受控机制来规避此限制,只要正确的使用,这种方法就很安全。...window.postMessage() 方法时调用页面的当前状态;4.source 属性记录调用 window.postMessage() 方法的窗口信息。...caniuse 通过上面的图片,我们可以看出来,几乎所有的浏览器都支持了 postMessage,所以放心大胆的去使用吧。...请注意,这个 origin 不能保证是该窗口的当前或未来 origin ,因为postMessage 被调用后可能被导航到不同的位置。

1.7K10

postMessage实现跨域通信

跨文档通信就是我们国内更为熟知的HTML5 window.postMessage()应用的那种通信;通道通信也被称为”MessageChannel”....发送核心JS代码如下: window.parent.frames[1].postMessage(message, '*'); 说明: window.parent.frames[1]指的就是demo正页中的第二个...然后使用postMessage方法发送数据。 postMessage方法支持两个参数,具体参考下表: message发送的数据targetOrigin发送数据的来源。...也就是要使用:window.postMessage(‘发送信息。’,’http://example.zhangxinxu.com’);而不是:window.postMessage(‘发送信息。’...主demo页面JS代码都有,且高亮显示了,有中文注释,相信不难理解的。 本来还想举个实际应用的例子,例如iframe高度自适应问题。不过,一是懒;二是担心躲得深不易发现。这里赞先免了。

1.6K20

PostMessage严谨用法要这样做

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

2.6K40

iframe+postMessage实现跨域通信

(),于是就决定用iframe结合window.postMessage()实现 在页面中嵌入一个iframe,将图片管理系统嵌入到当前的管理系统中,结合window.postMessage()实现跨域通信...项目背景 该管理系统基于React.js搭建,在此简称为A页面,地址为http://www.blogoog.com:8000 图片管理系统基于Vue.js搭建,在此简称为B页面,地址为http://www.blogoog.com...()-MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage 1、A页面使用到的语法 window.postMessage...() otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow:其他窗口的一个引用(在这里我使用了iframe...或者未来origin,因为postMessage被调用后,可能会被导航到不同的位置,所以需要做个异常情况判断处理origin !

5.2K40

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

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

3.6K21

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

利用第一个漏洞可以通过postMessage方式从facebook.com网站中发送跨域(cross-origin)消息,存在漏洞的路径会接收攻击者在请求参数中构造的控制内容,同时会以postMessage...漏洞:通过postMessage方式从facebook.com网站中发送跨域(cross-origin)消息 存在漏洞的路径为https://www.facebook.com/payments/redirect.php...) 图中的目标域为our.intern.facebook.com,该域名一般都为Facebook内部使用,因此从其信息来看,里面的postMessage方法貌似仅是提供给Facebook内部员工请求使用的...,第一,它会通过postMessage用frameName方法向任意域发送一条消息;第二,它会设置一个事件监听器EventListener静待消息。...如果其’appTabUrl’的URL链接以http/https开头,则后台不会对该URL进行安全验证,因此,我们可以在此引入JS等其它形式触发XSS!

75810
领券