所有分类
  • 所有分类
  • 后端开发
跨文档消息传递(XDM):安全高效的页面间通信方式

跨文档消息传递(XDM):安全高效的页面间通信方式

在来自不同域名的页面间传递消息一般统称为跨文档消息传送,简称xdm。如果传给postMessage()的第二个参数是”*”,则表示可以把消息发送给来自任何域的文档。HTML5实战与剖析之跨文档消息传递(iframe传递信息)的相关知识就为大

还真是头一回听到跨文档消息传递(XDM)这回事儿,新鲜极了!你看咱们做网页时,老是要把数据从这个页面传到另一个页面,有时候iframe嵌套或者弹出框也会加入进来。不过别担心,XDM就像个传送门,让这些独立的页面之间可以相互沟通,安全又高效!

那时,我在弄个网页,需要让主页和内嵌的iframe共用登录状态。试过好多方法,但感觉都不安全,可能会被黑客攻击(比如那个叫”跨站脚本攻击”的东西,真烦!)。后来学到了一招,就是postMessage(),这东西威力不小,不仅可以只发送给指定网址的消息,还能防止信息泄露或窃取。

理解postMessage()的精髓

你用-PostMessage()函数传消息?记得看清楚那两个参数喔。首先是你要说啥,也就是那个字符串啦;然后是给你想说的人,也就是他的域名。这个域名可厉害了,它就像是把锁,只有知道密码(即拥有该域名)的人才可以打开,这样才能确保我们聊天很安全滴!


有次我调程序时,不小心把第二个参数打成了“*”,结果忘了看仔细了,乱写一气。想想也觉得挺有意思,连我家楼下小卖部都能看到我电脑上发出来的信息。其实,刚开始还觉得挺好玩儿的,但后来想想,这有点儿危险!所以说,咱们在搞开发的时候,一定要时刻警惕着!

//获取框架中的window
var iframeWin = document.getElementById("iframe").contentWindow;
alert(iframeWin) // [object window]
//向框架中发送消息
iframeWin.postMessage("一个消息", "http://blog.csdn.net/lee_magnum")

事件触发的奥秘

在XDM里面,收信息就靠弹出窗口的message事搞定!不过网络不好的话可能会有小卡顿,所以大家要留意~

上次,关键功能消息传太慢了让用户不满意。为了解决这个问题,咱深入了解了下消息处理流程,对代码做了提升和精简,去掉没用的传输数据,这下消息飞起来了!

安全第一:验证消息来源

咱们总是要用XDM传递消息,确定身份可重要了。每回我收到消息并处理时,都会查查它从哪儿发出的,只有确定是可信网站的,我才能安心哟~

上次忘了检查消息来源,结果被人在网站上放了恶意脚本,导致大麻烦。所以说,再小的防护措施都不能掉以轻心!

数据的传输:字符串与结构化数据

最早的POSTMessage方法只支持字符串传输,但实际操作时,我们可能需要传输更多信息。这时候我就学会了使用JSON.stringify()来把想发的数据打包成字符串,然后接手方再用JSON.parse()把它们解开还原回来。

这方法虽然有点儿复杂,但确实能确保数据传输的准确性和安全性。我就用这种方法搞定了好几个项目,效果还挺好的~

XDM在实际项目中的应用

window.addEventListener('message',function(event){
	//确保发送消息的域名是已知的域名
	if(event.origin == "http://blog.csdn.net/lee_magnum"){
		//处理接收到的数据
		processMessage(event.data);
		//可选:向来源窗口发送回执
		event.source.postMessage("收到了", "http://www.leemagnum.com");
	}
}, false);

就是嘞,用了XDM这货就不用愁文档通信,用户登录,交互功能,统统不在话下!

真的,会用XDM让开发效率提升了好多,网页应用的安全性也跟着飙升!以后得更加努力学习,提高这方面的技巧!

对未来的展望

网络火得不行了,跨文档消息传递也要开始普及咯。身为程序猿的我得多学习点儿新知识,这样就能把这个变成网上更安全、更轻松的操作了。

原文链接:https://www.icz.com/technicalinformation/web/2024/06/16686.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?