《一种用于实现跨域交互访问的方法和系统.pdf》由会员分享,可在线阅读,更多相关《一种用于实现跨域交互访问的方法和系统.pdf(14页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103023790 A (43)申请公布日 2013.04.03 CN 103023790 A *CN103023790A* (21)申请号 201210590153.7 (22)申请日 2012.12.31 H04L 12/749(2013.01) H04L 29/06(2006.01) (71)申请人 北京京东世纪贸易有限公司 地址 100176 北京市北京经济技术开发区科 创十四街 99 号 2 号楼 B168 室 (72)发明人 尹彦明 (74)专利代理机构 中原信达知识产权代理有限 责任公司 11219 代理人 刘光明 穆德骏 (54) 发明名称 一种用于实。
2、现跨域交互访问的方法和系统 (57) 摘要 本发明提供一种用于实现跨域交互访问的方 法和系统。所述方法包括 : 由第一服务器的第一 web 应用中的 JavaScript 向 Java 接口发出对获 取第二服务器中的内容的请求, 所述第一服务器 属于第一域, 所述第二服务器属于与第一域不同 的第二域 ; 所述 Java 接口基于所述请求从所述第 二服务器获取所述第二 web 应用中的内容 ; 由所 述第一web应用中的JavaScript动态地创建具有 跨域能力的标签并且将所述标签的内容设置为所 获取的所述第二 web 应用中的内容 ; 以及由所述 第一web应用通过其JavaScript与所。
3、创建的标签 中的 JavaScript 进行交互。 (51)Int.Cl. 权利要求书 1 页 说明书 7 页 附图 5 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 7 页 附图 5 页 1/1 页 2 1. 一种用于实现跨域交互访问的方法, 所述方法包括 : 由第一服务器的第一 web 应用中的 JavaScript 向 Java 接口发出对获取第二服务器 中的内容的请求, 所述第一服务器属于第一域, 所述第二服务器属于与第一域不同的第二 域 ; 所述 Java 接口基于所述请求从所述第二服务器获取所述第二 web 应用中的内容 ; 由所述第一。
4、 web 应用中的 JavaScript 动态地创建具有跨域能力的标签并且将所述标 签的内容设置为所获取的所述第二 web 应用中的内容 ; 以及 由所述第一 web 应用通过其 JavaScript 与所创建的标签中的 JavaScript 进行交互。 2.根据权利要求1所述的方法, 其中, 从所述第二服务器获取所述第二web应用中的内 容包括 : 通过将所述内容封装成 JavaScript 格式的文件来从所述第二服务器获取所述第 二 web 应用中的内容。 3.根据权利要求1或2所述的方法, 其中, 从第二服务器获取第二web应用中的内容进 一步包括 : 对所述内容的路径进行转换处理。 4。
5、. 根据权利要求 3 所述的方法, 进一步包括 : 将所获取的内容保存在所述第一服务器 中。 5. 根据权利要求 1 或 2 所述的方法, 其中, 所述标签是 iframe。 6. 根据权利要求 1 或 2 所述的方法, 其中, 所述标签是 script。 7. 根据权利要求 1 所述的方法, 其中, 所述请求通过 JSON 或 JSONP 来实现。 8. 一种用于实现跨域交互访问的系统, 所述系统包括 : 第一服务器, 所述第一服务器包括第一 web 应用, 所述第一服务器属于第一域, 所述第 一服务器被配置成由所述第一服务器的第一 web 应用中的 JavaScript 向 Java 接口。
6、发出对 获取第二服务器中的内容的请求 ; Java接口, 所述Java接口被配置成基于所述请求从第二服务器获取第二web应用中的 内容 ; 第二服务器, 所述第二服务器包括第二 web 应用, 所述第二服务器属于与所述第一域 不同的第二域 ; 其中所述第一 web 应用被配置成由所述第一 web 应用中的 JavaScript 动态地创建具 有跨域能力的标签并且将所述标签的内容设置为所获取的所述第二 web 应用中的内容 ; 以 及由所述第一 web 应用通过其 JavaScript 与所创建的标签中的 JavaScript 进行交互。 9. 根据权利要求 8 所述的系统, 其中, 所述 Ja。
7、va 接口进一步被配置成 : 通过将所述内 容封装成 JavaScript 格式的文件来从所述第二服务器获取所述第二 web 应用中的内容。 10. 根据权利要求 8 或 9 所述的系统, 其中, 所述 Java 接口进一步被配置成 : 对所述内 容的路径进行转换处理。 11. 根据权利要求 10 所述的系统, 所述 Java 接口进一步被配置成 : 将所获取的内容保 存在所述第一服务器中。 12. 根据权利要求 8 或 9 所述的系统, 其中, 所述标签是 iframe。 13. 根据权利要求 8 或 9 所述的系统, 其中, 所述标签是 script。 14. 根据权利要求 8 所述的系统。
8、, 其中, 所述请求通过 JSON 或 JSONP 来实现。 权 利 要 求 书 CN 103023790 A 2 1/7 页 3 一种用于实现跨域交互访问的方法和系统 技术领域 0001 本发明涉及跨域交互访问, 更具体地, 涉及一种通过动态创建具有跨域能力的标 签来实现跨域交互访问的方法。 背景技术 0002 随着网络技术的发展, Web 应用对跨域访问的需求也越来越多。域 (Domain) 是 Windows网络中独立运行的单位, 域之间相互访问需要建立信任关系。 信任关系是连接在域 与域之间的桥梁。当一个域与其他域建立了信任关系后, 两个域之间不但可以按需要相互 进行管理, 还可以跨网。
9、分配文件和打印机等设备资源, 使不同的域之间实现网络资源的共 享与管理。 0003 然而, 由于浏览器的安全限制, 同源策略阻止从一个域上加载的脚本获取或操作 另一个域上的文档属性。 同源策略是为了防止从一个地址加载的文档或脚本访问或者设置 从另外一个地址加载的文档的属性。也就是说, 受到请求的 URL 的域必须与当前 Web 页面 的域相同。这意味着浏览器隔离来自不同源的内容, 以防止它们之间的操作。图 1 示意性 地示出了跨域访问的概念图。如图 1 中所示, 如果 aa.com 需要对同一域名 aa.bb.com 下的 资源进行请求, 则这种请求是允许的。然而, 如果 aa.com 需要对。
10、不同域名 bb.com 下的资源 进行请求, 那么就构成了跨域请求 (也就是说, 对脚本所在的服务器之外的服务器进行了访 问) , 浏览器会拒绝对 bb.com 的资源的请求。 0004 受到同源策略的影响, 跨域资源共享就会受到制约, 但是跨域访问资源是有利的。 例如, 可以将请求分摊到不同的服务器, 减轻单个服务器压力以提高响应速度 ; 以及可以将 不同的业务逻辑分布到不同的服务器上以降低负载。 现有技术中通常使用代理、 document. domain 方案或使用 HTML5 中的 WebSocket 方案来实现跨域交互访问。 0005 使用代理来实现跨域交互访问的原理是在服务器上配置一。
11、个代理, 从而不用服务 器直接请求需要的 web 服务, 而是通过代理去请求 web 服务, 然后再将结果返回到服务器。 图 2 示意性地图示了现有技术中利用代理来实现跨域访问的视图。如图 2 所示, 首先由客 户端向代理发起请求, 代理在接收到请求之后向web服务器发起请求。 接着, web服务接收、 处理该请求, 并将结果返回代理。最后, 代理将结果返回客户端。根据情况, 可以在客户端 和 web 服务器两端均配置代理。例如, 在公开号为 CN101615179A、 题为 “用于 web 应用的跨 域交互的方法和系统” 的专利申请中, 在客户端和 web 服务器两端均配置代理的情况下, 通。
12、 过使用一个隐藏的 iframe 通过表单提交的方式来回刷新页面来进行交互, 该方案强调数 据的传递和处理并且只解决了跨域的 web 数据交互问题。使用代理的这种方法虽然使用广 泛, 但是不够灵活而且会受到服务器性能的限制。 0006 另外, document.domain 方案通过修改文档的域 (domain) 属性, 使得可以在域和 子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域, 比如 www.a.com 和 sub.a.com 是不同的域, 这时, 我们无法在 www.a.com 下的页面中调用 sub.a.com 中定义 的 JavaScript (JS) 方法。但是。
13、当我们把它们 document 的 domain 属性都修改为 a.com, 浏 说 明 书 CN 103023790 A 3 2/7 页 4 览器就会认为它们处于同一个域下, 那么我们就可以互相调用对方的方法来通信了。使用 JS 设置需要交互的两个网页的 document.domain 相同。实现相互之间的 JS 脚本访问。这 种方案的缺陷是只能应用于同一个域下的二级域名之间的应用, 也就是主域相同而二级域 名不同的情况下, 而不能使用在完全不同的两个域下。另外, 当一个站点被攻击后, 另一个 站点会引起安全漏洞。 0007 此外, 还可以使用 HTML5 中的 WebSocket。这种方案。
14、的缺陷是只能在少数支持 HTML5 的浏览器中应用, 并且不支持 IE6/IE7/IE8 这样的主流浏览器。 0008 因此, 为了使 web 应用能够动态访问其他域的数据和服务, 需要一种能够更安全、 方便地实现跨域交互访问的方法和系统。 发明内容 0009 实现 JS 跨域访问需要解决以下问题 : 如何动态地获取跨域服务器中的数据 ; 如何 创建标签和设置标签的内容, 以便保证良好的浏览器兼容性 ; 以及如何保证标签的内容中 引用外部文件的地址有效。 0010 本发明的目的是突破, 浏览器对 JS(JavaScript) 在不同域 (域名 (Domain Name) , 是由一串用点分隔的。
15、名字组成的Internet上某一台计算机或计算机组的名称) 之间访问的 安全限制, 提供一种无缝的在不同域场景中 (例如, a.com 域中的 A 页面使用 iframe 嵌入了 b.com 域中的 B 页面, A 页面要访问 B 页面中的 JS 的变量或方法等) 实现 JS 无缝交互访问 的解决方案。本方案使用动态渲染诸如 iframe 的标签的思想, 越过浏览器的跨域限制, 实 现跨域 JS 的无缝访问。从实现角度来讲本发明包括三个核心部分。 0011 第一, 采用 JS 动态创建具有跨域能力的标签 (诸如 iframe) 而不是传统的 html 标 记中的 iframe, 这样做的好处是。
16、标签中的内容可以通过 JS 来控制, 不需要通过传统的 src 属性来获取, 浏览器会认为动态创建的这个标签与其所在的网页是同一个域下的, 不存在 跨域访问的问题。 0012 第二, 采用 java 接口抓取跨域 web 应用中的内容, 并将内容中的相对路径转换成 绝对路径。相对路径指的是主页上的文件或目录相对于某个基准目录的路径, 相对路径是 由这个文件所在的路径引起的与其它文件或文件夹的路径关系 ; 而绝对路径指的是主页上 的文件或目录在硬盘上真正的路径, 绝对路径可以完整地描述文件位置。 0013 第三, JS 采用 JSON 的方式去调用 java 接口, 因为 java 接口与 JS。
17、 是部署在不同 域下。优选地, 可以通过 JSONP(JSON with Padding, 具有填充符的 JSON) 实现跨越通讯, 以便获取 java 接口返回的数据。JSONP 是资料格式 JSON 的一种 “使用模式” , 通过这种模 式可以实现数据的跨域获取。 0014 根据本发明的一个实施例, 提供了一种用于实现跨域交互访问的方法, 所述方法 包括 : 由第一服务器的第一 web 应用中的 JavaScript 向 Java 接口发出对获取第二服务器 中的内容的请求, 所述第一服务器属于第一域, 所述第二服务器属于与第一域不同的第二 域 ; 所述 Java 接口基于所述请求从所述第二。
18、服务器获取所述第二 web 应用中的内容 ; 由所 述第一 web 应用中的 JavaScript 动态地创建具有跨域能力的标签并且将所述标签的内容 设置为所获取的所述第二 web 应用中的内容 ; 以及由所述第一 web 应用通过其 JavaScript 与所创建的标签中的 JavaScript 进行交互。 说 明 书 CN 103023790 A 4 3/7 页 5 0015 优选地, 从所述第二服务器获取所述第二 web 应用中的内容包括 : 通过将所述内 容封装成 JavaScript 格式的文件来从所述第二服务器获取所述第二 web 应用中的内容。 0016 优选地, 从第二服务器获。
19、取第二 web 应用中的内容进一步包括 : 对所述内容的路 径进行转换处理。 0017 优选地, 将所获取的内容保存在所述第一服务器中。 0018 优选地, 所述标签是 iframe。 0019 优选地, 所述标签是 script。 0020 优选地, 所述请求通过 JSON 或 JSONP 来实现。 0021 根据本发明的另一个实施例, 提供了一种用于实现跨域交互访问的系统, 所述系 统包括 : 第一服务器, 所述第一服务器包括第一 web 应用, 所述第一服务器属于第一域, 所 述第一服务器被配置成由所述第一服务器的第一 web 应用中的 JavaScript 向 Java 接口 发出对获。
20、取所述第二服务器中的内容的请求 ; Java 接口, 所述 Java 接口被配置成基于所 述请求从第二服务器获取第二 web 应用中的内容 ; 第二服务器, 所述第二服务器包括第二 web 应用, 所述第二服务器属于与所述第一域不同的第二域, 其中所述第一 web 应用被配 置成由所述第一 web 应用中的 JavaScript 动态地创建具有跨域能力的标签并且将所述标 签的内容设置为所获取的所述第二 web 应用中的内容 ; 以及由所述第一 web 应用通过其 JavaScript 与所创建的标签中的 JavaScript 进行交互。 0022 所述 Java 接口进一步被配置成 : 通过将。
21、所述内容封装成 JavaScript 格式的文件 来从所述第二服务器获取所述第二 web 应用中的内容。 0023 所述 Java 接口进一步被配置成 : 对所述内容的路径进行转换处理。 0024 所述 Java 接口进一步被配置成 : 将所获取的内容保存在所述第一服务器中。 附图说明 0025 附图图示了本发明的实施例, 并与说明书一起用于解释本发明的原理。在附图 中 : 0026 图 1 示意性地图示了跨域访问的概念图。 0027 图 2 示意性地图示了现有技术中利用代理来实现跨域访问的视图。 0028 图 3 示意性地图示了根据本发明的一个实施例的实现跨域访问的系统及其工作 流程的视图。。
22、 0029 图 4 示意性地图示了根据本发明的另一个实施例的实现跨域访问的系统及其工 作流程的视图。 0030 图 5 示意性地图示了根据本发明的实施例的实现跨域访问的方法的流程图。 具体实施方式 0031 本发明基于动态创建具有跨域能力的标签和动态渲染内容的思想, 实现了两个完 全不同的域下的网页之间 JS 脚本交互的功能, 达到与同域情况下相同的无缝跨域交互体 验, 解决了跨域 JS 访问的问题, 从而为不同域的两个 Web 项目之间的合作解决了核心技术 问题。 0032 如本领域技术人员已知的, 是否跨域的判断规则为对三者进行比较 : 域名、 协议、 说 明 书 CN 103023790。
23、 A 5 4/7 页 6 端口 ; 三者中若有一个不相同, 则会出现跨域问题。 在本发明中, 跨域通常指的是域名不同。 简单来说, 跨域访问指的是 A 网站的 javascript 代码试图访问处于不同域中的 B 网站, 包 括提交内容和获取内容。JavaScript 是一种基于对象的脚本语言, 用于开发基于客户端和 基于服务器的 Internet 应用程序, 可用于创建客户端脚本, 被简称为 JS。 0033 虽然浏览器默认禁止了跨域访问, 但是并不禁止在Web页面中引用其他域的JS文 件, 并且可以自由执行引入的 JS 文件中的功能 (包括操作 cookie、 Dom 等) 。也就是说, 。
24、如果 A 网站从 B 网站加载 Javascript, A 网站可以自由地访问该 Javascript 的内容, 并不会被 浏览器认为是跨域访问。不仅如此, 我们还发现凡是拥有 “src” 这个属性的标签都拥有跨 域的能力, 比如 、 、 。可选地, src 属性不一定必须是一个存在的 JS 文件, 也可以是一个 URL, 只要返回的是一个 javascript 类型的响应就可以。因此, 为了实 现跨域交互, 我们可以通过在远程服务器上设法把数据装进 JS 格式的文件里来使客户端 能够调用和进一步处理所述数据。 0034 例如, 如本领域技术人员已知的, 由于 JSON(JavaScript 。
25、Object Notation) 的纯 字符数据格式可以简洁的描述复杂数据并且 JSON 还被 JS 原生支持, 所以 JSON 可以在客户 端任意地处理这种格式的数据。因此, web 客户端可以通过与调用脚本一模一样的方式来 调用跨域服务器上动态生成的 JS 格式文件 (一般以 JSON 为后缀) 。显而易见, 服务器之所 以要动态生成 JSON 文件, 目的就在于把客户端需要的数据装入进去。 0035 客户端在对 JSON 文件调用成功之后, 也就获得了自己所需的数据, 剩下的就是按 照自己需求进行处理和展现了。替代地, 为了便于客户端使用数据, 可以使用 JSONP(JSON with 。
26、Padding) 。JSONP 是一个非官方的协议, 它允许在服务器端集成脚本标签 (Script tags) 返回至客户端, 通过 javascript 回调函数 (callback) 的形式来实现跨域访问。也就 是说, JSONP 允许用户将一个 callback 参数传递给服务端, 然后服务端返回数据时会将这 个 callback 参数作为函数名来包裹住 JSON 数据, 这样客户端就可以随意定制自己的函数 来自动处理返回数据了。 0036 因此, 利用诸如 、 、 等具有跨域能力的标签, 根据本发明 的实施方案首先通过将跨域 B 页面的内容封装成 JS 格式的文件来获取 B 页面的内容。
27、, 然后 将所获取的跨域 B 页面的内容包含在本地 A 页面中, 由此实现跨域交互访问。 0037 例如, 根据本发明的一个实施例, 首先通过利用JSONP将跨域B页面的内容封装成 JS 格式的文件来获取跨域 B 页面的内容, 然后通过在本地 A 页面中使用 JS 动态地创建一 个 iframe 元素, 并且动态地将 B 网页的内容设置为 iframe 的内容, 使得浏览器认为 A 页面 与 iframe 在同一个域下。其中 iframe 中的内容与 B 页面的内容是一致的, 从而从侧面达 到了两个页面之间 JS 相互访问的目的。 0038 替代地, 根据本发明的另一个实施例, 也可以通过使用。
28、JS动态地创建script来实 现完全跨域的交互, 使得能够通过将要请求的跨域页面的内容封装成 JS 格式的文件来将 跨域页面包含在本地页面中, 从而实现跨域访问。 0039 下面结合说明书附图详细描述本发明的实施例的用于实现跨域访问的系统及其 工作流程。 0040 图3示意性地图示了根据本发明的一个实施例的实现跨域访问的系统300及其工 作流程的视图。如图 3 所示, 系统 300 包括服务器 302 和服务器 304, 其中服务器 302 提供 说 明 书 CN 103023790 A 6 5/7 页 7 属于域 A 的服务和 / 或数据, 而服务器 304 提供属于与域 A 不同的域 B。
29、 的服务和 / 或数据。 例如, 服务器 302 可以是网站 a.com, 而服务器 304 可以是网站 b.com。在本发明的此实施 例中, 服务器302和服务器304既可以是物理上独立的两个实体, 也可以是逻辑上独立的两 个 web 服务器, 两者分别提供属于不同域的服务 / 数据。 0041 如图 3 中所示, 当用户想要访问属于域 B 的服务器 304 的 web 应用 308 中的内容 时, 属于域 A 的 web 应用 306 将被调用并运行于客户端的浏览器上。web 应用是一种基于 web 的应用, 指的是用户界面驻留在 web 浏览器中的任何应用程序, 它是一些 web 网页和。
30、用 来完成某些任务的其他资源的集合。web 应用是客户端 / 服务器架构的产物, 它能够通过 网络使得客户端与服务器进行通信。例如, 常见的聊天室、 论坛等都是 web 应用。web 应用 306 可以与服务器 302 相互通信, 因为它们属于相同的域。 0042 然后, 在步骤 1, web 应用 306 中的 JS 向 Java 接口 310 发出对获取属于域 B 的服 务器 304 中的内容的请求。该请求可以通过例如可以在任何不同的域之间调用的 JSONP 来 实现。JSONP 是一个非官方的协议, 它允许在服务器端集成脚本标签 (Script tags) 返回至 客户端, 通过 jav。
31、ascript 回调函数的形式来实现跨域访问。然而, 本领域技术人员可以理 解, 还可以使用其他的方式来实现请求, 例如, 开放 API 等。 0043 接着, 在步骤 2, Java 接口 310 在接收到该请求之后基于该请求从属于域 B 的服务 器 304 获取其 web 应用 308 中的内容并根据情况对内容的相对路径进行转换处理。所获取 的 web 应用 308 中的内容被封装成 JS 格式的文件。根据本发明的一个实施例, Java 接口 可以使用 httpclient 来抓取 web 应用 308 中的内容。httpclient 提供了便利的 HTTP 协议 访问, 使得我们可以很容。
32、易地得到某个网页的源码并保存在本地。 替代地, 也可以使用其他 技术来抓取 web 应用 408 中的内容, 例如, htmlparser 等。 0044 所述路径的转换例如是将 web 应用 308 中的内容的相对路径转换成绝对路径, 以 便能够根据绝对路径获取内容。 相对路径是以引用文件之网页所在位置为参考基础而建立 出的目录路径。因此, 当保存于不同目录的网页引用同一个文件时, 所使用的路径将不相 同, 所以称之为相对。绝对路径是以 Web 站点根目录为参考基础的目录路径。之所以称为 绝对, 意指当所有网页引用同一个文件时, 所使用的路径都是一样的。 其实绝对路径与相对 路径的不同处, 。
33、只在于描述目录路径时, 所采用的参考点不同。由于对网站上所有文件而 言, 根目录这个参考点对所有文件都是一样的, 因此, 运用以根目录为参考点的路径描述方 式才会被称之为绝对路径。 0045 在步骤 3, 在将所获取的 web 应用 308 中的内容保存在服务器 302 之后, web 应用 306 中的 JS 动态地创建 iframe 并且将 iframe 的内容设置为所获取的 web 应用 308 中的内 容。 0046 iframe 对象也可以被称为嵌入式元素或嵌入式框架, 它可以将一个网页的框架和 内容嵌入在现有的 HTML 网页中, 作为现有 HTML 网页的一个子窗口。iframe。
34、 可以嵌入到 HTML 网页中的任意部分。它的一大特征是, iframe 所引用的 HTML 文件不是与另外的 HTML 文件相互独立显示, 而是可以直接嵌入在一个HTML文件中, 但是这两个HTML文件是相互独 立的, 两者都被看成是完整的文件, 而不是将其中一个看成另一个的一部分。另外, iframe 还可以多次在不同页面内显示同一内容, 而不必重写该内容。iframe 的大小是可调整的。 0047 在步骤 3 中将 web 应用 308 中的内容包含在 iframe 中之后, 由于 iframe 与服务 说 明 书 CN 103023790 A 7 6/7 页 8 器 302 属于相同的。
35、域 A, 所以在步骤 4 服务器 302 中的 web 应用 306 可以通过 web 应用 306 的 JS 与 iframe 中的 JS 进行交互来相互调用变量或方法等, 从而实现了跨域交互访问。 0048 图4示意性地图示了根据本发明的另一个实施例的实现跨域访问的系统400及其 工作流程的视图。如图 4 所示, 系统 400 包括服务器 402 和服务器 404, 其中服务器 402 提 供属于域 A 的服务和 / 或数据, 而服务器 404 提供属于与域 A 不同的域 B 的服务和 / 或数 据。例如, 服务器 402 可以是网站 a.com, 而服务器 404 可以是网站 b.com。
36、。在本发明的此 实施例中, 服务器402和服务器404既可以是物理上独立的两个实体, 也可以是逻辑上独立 的两个 web 服务器, 两者分别提供属于不同域的服务 / 数据。 0049 如图 4 中所示, 当用户想要访问属于域 B 的服务器 404 的 web 应用 408 中的内容 时, 属于域 A 的 web 应用 406 将被调用并运行于客户端的浏览器上。web 应用 406 可以与服 务器 402 相互通信, 因为它们属于相同的域。 0050 然后, 在步骤 1, web 应用 406 中的 JS 向 Java 接口 410 发出对获取属于域 B 的服 务器中的内容的请求。该请求可以通过。
37、例如可以在任何不同的域之间调用的 JSONP 来实 现。JSONP 是一个非官方的协议, 它允许在服务器端集成脚本标签 (Script tags) 返回至客 户端, 通过 javascript 回调函数的形式来实现跨域访问。然而, 本领域技术人员可以理解, 还可以使用其他的方式来实现请求, 例如, 开放 API 等。 0051 接着, 在步骤 2, Java 接口 410 在接收到该请求之后基于该请求从属于域 B 的服务 器 404 获取其 web 应用 408 中的内容并根据情况对内容的相对路径进行转换处理。所获取 的 web 应用 408 中的内容被封装成 JS 格式的文件。所述路径的转换。
38、例如是将 web 应用 408 中的内容的相对路径转换成绝对路径, 以便能够根据绝对路径获取内容。根据本发明的一 个实施例, Java 接口可以使用诸如 httpclient 来抓取 web 应用 408 中的内容。替代地, 也 可以使用其他技术来抓取 web 应用 408 中的内容, 例如, htmlparser 等。 0052 在步骤 3, 在将所获取的 web 应用 408 中的内容保存在服务器 402 之后, web 应用 406 中的 JS 动态创建 script 并且将 script 的内容设置为所获取的 web 应用 408 中的内 容, 使得将跨域 web 应用 408 中的内。
39、容包含在本地 web 应用 406 中。 0053 在步骤3中将web应用408中的内容包含在本地web应用406中之后, 由于script 与服务器 402 属于同域 A, 所以在步骤 4 服务器 402 中的 web 应用 406 可以通过 web 应用 406的JS与script中的JS进行交互来相互调用变量或方法等, 从而实现了跨域交互访问。 0054 图 5 示意性地图示了根据本发明的实施例的实现跨域访问的方法 500 的流程图。 如图 5 所示, 在步骤 504, 属于域 A 服务器的 web 应用中的 JS 向 Java 接口发出对获取属于 域 B 的服务器中的内容的请求。在步骤。
40、 506, Java 接口在接收到该请求之后基于该请求从 属于域 B 的服务器获取其 web 应用中的内容并根据情况对内容的相对路径进行转换处理。 在步骤 508, 域 A 中的 web 应用中的 JS 动态创建标签并且将该标签的内容设置为所获取的 B 域中的 web 应用中的内容。然后, 在步骤 510, 域 A 中的 web 应用可以通过其 JS 与所创建 的标签中的 JS 进行交互。最后, 方法 500 结束。 0055 此外, 在使用 WebSocket 技术进行通信的情况下, 也可以采用本发明的思想。例 如, 可以在通过使用 JS 动态地创建 WebSocket 对象, 通过收发 W。
41、ebSocket 消息来实现完全 跨域的交互, 其中, 解析消息内容仍然调用 JS 方法。然而, 此方案只能在支持 HTML5 新特性 的浏览器中应用, 并且具有兼容性差、 性能低、 操作繁琐的缺点。 说 明 书 CN 103023790 A 8 7/7 页 9 0056 本发明的方案具备足够的安全性。例如, 用户使用的 web 应用所在的域的凭证 (例 如, 用户名和口令) 被保留在本地, 而不会被传递到属于目标域 (即, 需要调用的服务或访问 的数据所在的域) 的服务器端, 从而确保了本地关键数据的安全性。 0057 根据本发明的实施方案的跨域交互不仅可应用于主次域名的文件资源, 而且可应。
42、 用于非主次域名的跨域交互。本发明针对的是跨域的 JS 交互和调用, 通过动态设置具有跨 域能力的标签的内容来越过浏览器的跨域限制, 从而实现与同域情况下相同的无缝 JS 交 互体验。因此, 本发明的数据获取被推到了前端 JS, 而绕过了服务器, 从而节省了服务端资 源开销。另外, 由于数据直接在客户端交互, 所以速度也最快。 0058 上述实施例仅是本发明的优选实施例, 并不用于限制本发明。对本领域技术人员 显而易见的是, 在不脱离本发明的精神和范围的情况下, 可以对本发明的实施例进行各种 修改和改变。因此, 本发明意在涵盖落入如权利要求所限定的本发明的范围之内的所有这 样的修改或变型。 说 明 书 CN 103023790 A 9 1/5 页 10 图 1 说 明 书 附 图 CN 103023790 A 10 2/5 页 11 图 2 说 明 书 附 图 CN 103023790 A 11 3/5 页 12 图 3 说 明 书 附 图 CN 103023790 A 12 4/5 页 13 图 4 说 明 书 附 图 CN 103023790 A 13 5/5 页 14 图 5 说 明 书 附 图 CN 103023790 A 14 。