克服浏览器同源策略限制的交互方法及设备技术

技术编号:12569547 阅读:69 留言:0更新日期:2015-12-23 12:04
本申请提供一种克服浏览器同源策略限制的交互方法及设备,通过统一资源定位符的location.hash携带待传递的数据在不同域的父页面和子页面之间传递数据,或以统一资源定位符的location.hash作为标识触发父页面或子页面DOM操作,完成不同域的父页面和子页面之间的脚本调用,实现以web前端的方式绕开浏览器同源策略的限制进行交互,解决不同域下的网站之间数据交互和DOM控制问题,尤其能够实现不同域的父页面与子页面间的DOM操作和控制。

【技术实现步骤摘要】

本申请涉及计算机领域,尤其涉及一种克服浏览器同源策略限制的交互方法及设备
技术介绍
同源策略是浏览器的保护机制的一部分,该机制将来自不同域(假设域代表的是始发者)的web应用程序分离开来。也就是说,如果多个窗口或框架中的一些应用程序是从不同的域下载的,那么它们是无法相互访问数据和脚本的。具体来说,相同的ip、相同的网络协议、相同的端口,三者都满足就是同一个域,否则就属于不同域网站间的问题。因为浏览器同源策略的限制,一般情况下是不能直接通过一个域上加载的脚本获取或者操作另一个域上的文档属性。要进行不同域网页间的信息交互或DOM操作,就要设法绕过或者说克服同源策略的限制。当前主要采用的技术有以下几种:I) Document, domain的方式,但这种方式只能适用于不同子域的情况;2) Window, name的方式,但这种方式浏览器兼容的支持有限,只有ie6、ie7支持,而且数据通信量有限;3)HTML5postMessage的方式,但这种方式支持的浏览器有限,只有支持HTML5的浏览器才可以用这种方式;4) JSONP的方式,浏览器兼容性好,但是这种方式只支持POST而不支持GET请求,并且只支持数据的交互,并不能解决不同域的页面间脚本调用DOM操作的问题。而且这是一种脚本注入的行为,存在一定的安全隐患。
技术实现思路
本申请的一个目的是提供一种克服浏览器同源策略限制的交互方法及设备,能够解决因为浏览器同源策略的限制,不同域下的网页之间不能进行数据传递和DOM控制的问题。根据本申请的一个方面,提供了一种克服浏览器同源策略限制的交互方法,其中,该方法包括:通过统一资源定位符的locat1n, hash携带待传递的数据在不同域的父页面和子页面之间传递数据; 和/或以统一资源定位符的locat1n, hash作为标识触发父页面或子页面DOM操作,完成不同域的父页面和子页面之间的脚本调用。进一步的,上述克服浏览器同源策略限制的交互方法中,通过统一资源定位符的locat1n, hash携带待传递的数据在不同域的父页面和子页面之间传递数据中,当子页面获取父页面的待传递数据时,包括:在父页面设置一个iframe元素,并将所述iframe元素的属性src设置为子页面的链接;将所述待传递的数据放在属性src的统一资源定位符的locat1n, hash中;在子页面中定义一个变量,监听locat1n, hash中待传递数据是否有变化,如果有变化,将有变化的待传递数据赋值给所述变量。进一步的,上述克服浏览器同源策略限制的交互方法中,在子页面中定义一个变量,监听locat1n, hash中待传递数据是否有变化,如果有变化,将有变化的待传递数据赋值给所述变量,包括:在子页面中定义一个变量,子页面每隔预设时间获取locat1n, hash中的待传递数据,将获取到的待传递数据与所述变量的值进行比较,如果待传递数据与所述变量的值不同,则将所述待传递数据重新赋值给所述变量。进一步的,上述克服浏览器同源策略限制的交互方法中,在父页面设置一个iframe元素,并将所述iframe元素的属性src设置为子页面的链接之后,还包括:通过对所述iframe元素的css样式的设置使所述子页面不显示。进一步的,上述克服浏览器同源策略限制的交互方法中,以统一资源定位符的locat1n, hash作为标识触发子页面DOM操作,完成不同域的父页面和子页面之间的脚本调用,包括:在父页面设置一个iframe元素,并将所述iframe元素的属性src设置为子页面的链接;将触发子页面DOM操作的标识放在属性src的统一资源定位符的locat1n, hash中;在子页面中定义一个变量,监听locat1n, hash中所述标识是否有变化,如果有变化,将有变化的所述标识赋值给所述变量;子页面根据所述变量的新赋值进行子页面中相关的脚本调用的DOM操作。进一步的,上述克服浏览器同源策略限制的交互方法中,在子页面中定义一个变量,监听locat1n, hash中所述标识是否有变化,如果有变化,将有变化的所述标识赋值给所述变量,包括:在子页面中定义一个变量,子页面每隔预设时间获取locat1n, hash中的所述标识,将获取到的标识与所述变量的值进行比较,如果所述标识与所述变量的值不同,则将所述标识重新赋值给所述变量。进一步的,上述克服浏览器同源策略限制的交互方法中,通过统一资源定位符的locat1n, hash携带待传递的数据在不同域的父页面和子页面之间传递数据中,当父页面获取子页面的待传递数据时,包括:在父页面设置一个iframe元素,并将所述iframe元素的属性src设置为子页面的链接;设置一个与所述父页面属于同一域的代理页面,在子页面设置一个隐藏的iframe元素,并将所述隐藏的iframe元素的属性src设置为所述代理页面的链接;子页面将所述待传递的数据放在所述隐藏的iframe元素的属性src的统一资源定位符的locat1n, hash中;在代理页面中定义一个变量,监听locat1n, hash中待传递数据是否有变化,如果有变化,将有变化的待传递数据赋值给所述变量;定位到父页面待变化的元素,将所述变量的值放到所述待变化的元素中。进一步的,上述克服浏览器同源策略限制的交互方法中,在代理页面中定义一个变量,监听locat1n, hash中待传递数据是否有变化,如果有变化,将有变化的待传递数据赋值给所述变量,包括:在代理页面中定义一个变量,代理页面每隔预设时间获取locat1n, hash中的待传递数据,将获取到的待传递数据与所述变量的值进行比较,如果所述待传递数据与所述变量的值不同,则将所述待传递数据重新赋值给所述变量;进一步的,上述克服浏览器同源策略限制的交互方法中,以统一资源定位符的locat1n, hash作为标识触发父页面DOM操作,完成不同域的父页面和子页面之间的脚本调用,包括:在父页面设置一个iframe元素,并将所述iframe元素的属性src设置为子页面的链接;设置一个与所述父页面属于同一域的代理页面,在子页面设置一个隐藏的iframe元素,并将所述隐藏的iframe元素的属性src设置为代理页面的链接;子页面将触发父页面DOM操作的标识放在所述隐藏的iframe元素的属性src的统一资源定位符的locat1n, hash中;在代理页面中定义一个变量,监听locat1n, hash中所述标识是否有变化,如果有变化,将有变化的标识赋值给所述变量;代理页面根据所述变量的新赋值进行父页面中相关的脚本调用的DOM操作。进一步的,上述克服浏览器同源策略限制的交互方法中,在代理页面中定义一个变量,监听locat1n, hash中所述标识是否有变化,如果有变化,将有变化的标识赋值给所述变量,包括:在代理页面中定义一个变量,代理页面每隔预设时间获取locat1n, hash中的标识,将获取到的标识与所述变量的值进行比较,如果所述标识与所述变量的值不同,则将所述标识重新赋值给所述变量。根据本申请的另一面还提供一种克服浏览器同源策略限制的交互设备,该设备包括:第一装置,用于通过统一资源定位符的locat1n, hash携带待传递的数据在不同域的父页面本文档来自技高网...

【技术保护点】
一种克服浏览器同源策略限制的交互方法,其中,该方法包括:通过统一资源定位符的location.hash携带待传递的数据在不同域的父页面和子页面之间传递数据;和/或以统一资源定位符的location.hash作为标识触发父页面或子页面DOM操作,完成不同域的父页面和子页面之间的脚本调用。

【技术特征摘要】

【专利技术属性】
技术研发人员:贾春乐丁亚飞赵帅
申请(专利权)人:上海上讯信息技术股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1