[发明专利]跨域通讯及全双工通讯的方法、装置有效
申请号: | 201210063654.X | 申请日: | 2012-03-12 |
公开(公告)号: | CN103309877B | 公开(公告)日: | 2017-04-05 |
发明(设计)人: | 郭学亨;操龙敏;于树南;龙丁奋 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳市世纪恒程知识产权代理事务所44287 | 代理人: | 胡海国 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通讯 双工 方法 装置 | ||
技术领域
本发明涉及到通信领域,尤其涉及一种跨域通讯及全双工通讯的方法、装置。
背景技术
目前跨域资源访问常用的解决方案是FIM(Fragment Identitier Messaging)。当页面A0嵌入iFrame A1,相对于iFrameA1来说页面A0是父窗口,而iFrameA1则为页面A0的子窗口。父窗口可以读写子窗口的Url(Uniform/Universal Resource locator,统一资源定位符),子窗口也可以读写父窗口的Url。Url包括Frag参数,即#号以及#号后的字符,常用于浏览器的锚点定位,对于Frag参数的修改不会导致新的Http请求的发送。FIM就是通过改变Url的Frag参数实现双向通信。例如iFrame A1要向页面A0发送一个消息“hello”,只要在页面A0的Url的Frag参数部分添加“hello”,然后页面A0窗口通过监听自己的Url变化来接收iFrame A1传送的消息“hello”,反之亦然。
上述方法存在以下缺陷:由于父子窗口之间通过修改Url来传送数据,而对于Url的改变会增加额外的浏览器历史记录,同时造成浏览器历史记录前进、后退不准确。
发明内容
本发明的主要目的为提供一种跨域通讯及全双工通讯的方法、装置,实现无Url污染的跨域实时双向数据传输。
本发明提出一种跨域通讯的方法,用于需要数据交互的第一域的第一页面与属于第二域的第二页面,所述第一页面与所述第二页面在以下各项中至少有一项不同:协议、端口、host;包括步骤:
当所述第一页面需要向所述第二页面传送数据时,在所述第一页面中插入属于所述第二域的代理页面,通过所述代理页面传送所述数据至所述第二页面。
优选地,所述在第一页面中插入属于所述第二域的代理页面包括:
在所述第一页面中创建iFrame,所述iFrame的Src属性指向所述代理页面,并将传送给所述第二页面的数据以Frag的方式写到所述iFrame的统一资源定位符Url里。
优选地,所述通过所述代理页面传送所述数据至所述第二页面包括:
通过所述代理页面读取所述Url中的Frag参数,所述Frag参数携带所述数据。
优选地,所述通过所述代理页面传送所述数据至所述第二页面还包括:
在所述第二页面中轮询监听所述代理页面的Url的Frag参数变化;
当所述代理页面的Url发生变化时,响应所述Frag参数,所述Frag参数携带所述数据。
优选地,所述iFrame为隐藏的iFrame,所述代理页面为空白代理页面。
优选地,当所述第一页面需要向所述第二页面传送数据之前,还包括:在所述第一页面中嵌入所述第二页面。
优选地,所述通过所述代理页面传送所述数据至所述第二页面还包括:
通过所述第一域与所述第二域之间预定的协议,所述代理页面通过调用所述第二页面的方法响应所述第一页面的请求。
本发明还提出一种跨域全双工通讯的方法,用于需要数据交互的第一域的第一页面与属于第二域的第二页面,所述第一页面与所述第二页面在以下各项中至少有一项不同:协议、端口、host;其特征在于,包括步骤:
当所述第一页面需要向所述第二页面传送数据时,在所述第一页面中插入属于所述第二域的第二代理页面,通过所述第二代理页面传送所述数据至所述第二页面;
当所述第二页面需要向所述第一页面传送数据时,在所述第二页面中插入属于所述第一域的第一代理页面,
通过所述第一代理页面传送所述数据至所述第一页面。
优选地,当所述第一页面需要向所述第二页面传送数据之前或所述第二页面需要向所述第一页面传送数据之前,还包括:在所述第一页面中嵌入所述第二页面。
本发明还提出一种跨域通讯的装置,用于需要数据交互的第一域的第一页面与属于第二域的第二页面,所述第一页面与所述第二页面在以下各项中至少有一项不同:协议、端口、host;包括:
第一插入模块,用于当所述第一页面需要向所述第二页面传送数据时,在所述第一页面中插入属于所述第二域的代理页面;
第一传送模块,用于通过所述代理页面传送所述数据至所述第二页面。
优选地,所述第一插入模块具体用于:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210063654.X/2.html,转载请声明来源钻瓜专利网。