资讯专栏INFORMATION COLUMN

实现两个窗口通信方法-postMessage

NoraXie / 1223人阅读

摘要:调用时消息发送方窗口的这个字符串由协议域名端口号拼接而成。请注意,这个不能保证是该窗口的当前或未来,因为被调用后可能被导航到不同的位置。对发送消息的窗口对象的引用您可以使用此来在具有不同的两个窗口之间建立双向通信。

postMessage

otherWindow:其他窗口的一个引用,比如iframe的contentWindow属性、执行window.open返回的窗口对象、或者是命名过或数值索引的window.frames。

message:将要发送到其他 window 的数据。它将会被结构化克隆算法序列化。这意味着你可以不受什么限制的将数据对象安全的传送给目标窗口而无需自己序列化。

targetOrigin:通过窗口的origin属性来指定哪些窗口能接收到消息事件,其值可以是字符串”“(表示无限制)或者一个URI。在发送消息的时候,如果目标窗口的协议、主机地址或端口这三者的任意一项不匹配targetOrigin提供的值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。这个机制用来控制消息可以发送到哪些窗口;例如,当用postMessage传送密码时,这个参数就显得尤为重要,必须保证它的值与这条包含密码的信息的预期接受者的orign属性完全一致,来防止密码被恶意的第三方截获。如果你明确的知道消息应该发送到哪个窗口,那么请始终提供一个有确切值的targetOrigin,而不是。不提供确切的目标将导致数据泄露到任何对数据感兴趣的恶意站点。

transfer:是一串和message 同时传递的 Transferable 对象. 这些对象的所有权将被转移给消息的接收方,而发送一方将不再保有所有权。

message 的一些属性

data:从其他 window 中传递过来的对象。

origin:调用 postMessage 时消息发送方窗口的 origin . 这个字符串由 协议、“://“、域名、“ : 端口号”拼接而成。例如 “https://example.org (implying port 443)”、“http://example.net (implying port 80)”、“http://example.com:8080”。请注意,这个origin不能保证是该窗口的当前或未来origin,因为postMessage被调用后可能被导航到不同的位置。

source:对发送消息的窗口对象的引用; 您可以使用此来在具有不同origin的两个窗口之间建立双向通信。

实现通信demo:
// a.com/index.html


// b.com/index.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/52551.html

相关文章

  • 实现两个窗口通信方法postMessage

    摘要:调用时消息发送方窗口的这个字符串由协议域名端口号拼接而成。请注意,这个不能保证是该窗口的当前或未来,因为被调用后可能被导航到不同的位置。对发送消息的窗口对象的引用您可以使用此来在具有不同的两个窗口之间建立双向通信。 postMessage otherWindow:其他窗口的一个引用,比如iframe的contentWindow属性、执行window.open返回的窗口对象、或者是命名...

    LeanCloud 评论0 收藏0
  • 两个浏览器窗口通信总结

    摘要:两个浏览器窗口间通信总结一个窗口更新,另一个窗口监听对象的事件,来实现通信。通过窗口的属性来指定哪些窗口能接收到消息事件,其值可以是字符串表示无限制或者一个。父窗口先打开一个子窗口,载入一个不同源的网页,该网页将信息写入属性。 两个浏览器窗口间通信总结 1、localStorage 一个窗口更新localStorage,另一个窗口监听window对象的storage事件,来实现通信。注...

    Shonim 评论0 收藏0
  • iframe+postMessage实现跨域通信

    摘要:前言需求背景最近开发管理系统,需要在本页面跳转到一个图片管理系统上传图片,上传成功后返回图片链接,然后返回管理系统,显示图片实现思路上传图片时,需要在本窗口跳转到图片管理系统,并且两个系统之间要通信考虑到两个系统是不同的端口号,存在跨域问题 前言 需求背景: 最近开发管理系统,需要在本页面跳转到一个图片管理系统上传图片,上传成功后返回图片链接,然后返回管理系统,显示图片 实现思路: ...

    Youngdze 评论0 收藏0
  • 浏览器同源政策以及JS跨域

    摘要:浏览器同源政策以及跨域同源是指协议相同域名相同端口相同。同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。该协议不实行同源政策,只要服务器支持,就可以通过它进行跨源通信。参考文献浏览器同源政策及其规避方法详解跨域问题 浏览器同源政策以及JS跨域 同源是指协议相同、域名相同、端口相同。同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。 同源策略主要限制下面...

    zeyu 评论0 收藏0
  • 浅谈前端跨域

    摘要:一什么是跨域跨域简单的理解就是同源策略的限制。同源策略限制的内容请求不能正常进行。同源策略默认地址是网页的本身。 一、什么是跨域? 跨域简单的理解就是JavaScript同源策略的限制。是出于安全的考虑,a.com域名下的js不能操作b.com或者c.com域名下的对象。 当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算叫跨域。 一个正常...

    dunizb 评论0 收藏0

发表评论

0条评论

NoraXie

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<