理解PostMessage

来源:互联网 发布:淘宝访问受限怎么解决 编辑:程序博客网 时间:2024/06/10 10:39

PostMessage的使用

最近浏览了国外两篇有关Html5中PostMessage方法引发的漏洞,故研究了下PostMessage的运行机制,在此写下个人总结。

  • PostMessage是什么
  • PostMessage的作用
  • PostMessage的具体实现形式

PostMessage是什么

Html5中添加postmessage方法主要是实现不同窗体之间的消息传递(这有点类似与android的intend)

PostMessage的作用

  • 实现当前页面与新窗体的消息传递
  • 实现当前页面与嵌套iframe窗体的消息传递
  • 实现多个窗体之间的消息传递

PostMessage具体实现形式

postMessage(data,origin)方法接受两个参数,其中:
data :为传递消息的字符串
origin:指定窗口的源,格式为“协议+主机+端口号”,且如果origin指定为‘*’,则表示向所有窗体发送数据
发送窗体传递消息的方式:
window.parent.postMessage(data,origin);
接受消息窗体的监听事件:

window.addEventListener('message',function(e){              ....//处理接受的数据                  },false);

总结

PostMessage方法使跨文档、跨窗体传递数据的实现成为可能,但也可能产生漏洞,引起用户敏感信息被盗取等,下篇将详细论述。