首页> 中国专利> 跨网络应用的隔离部分调用应用编程接口

跨网络应用的隔离部分调用应用编程接口

摘要

描述了一种用于网络应用的隔离部分跨边界调用API的安全方法。主机网页从所述主机网页的第一内嵌框架接收第一对象。所述第一对象标识第一应用编程接口(API)。所述主机网页相对针对所述主机网页的预先定义的API来验证第一对象。一旦所述第一对象被验证,所述主机网页就将所述第一对象转发到所述主机网页的第二内嵌框架。所述第二内嵌框架解析所述第一对象,并且将经解析的第一对象转换为与第二内嵌框架相对应的第二API。

著录项

  • 公开/公告号CN112753032A

    专利类型发明专利

  • 公开/公告日2021-05-04

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201980062263.6

  • 发明设计人 J·G·阮;S·德什潘德;P·C·米勒;

    申请日2019-06-26

  • 分类号G06F21/54(20060101);G06F9/54(20060101);G06F16/958(20060101);

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人李光颖

  • 地址 美国华盛顿州

  • 入库时间 2023-06-19 10:51:07

说明书

技术领域

在本文中所公开的主题总体涉及一种提供用于网页的两个内联框架(iframe)进行通信的机制的专用机器、包括这样的专用机器的计算机化变体以及对这样的变体的改进;并且涉及这样的专用机器与在内联框架与其主机之间的消息中提供非可执行代码的其他专用计算机相比通过其而得到改进的技术。具体而言,本公开致力于在内联框架之间以及在内联框架与其主机之间通信可执行功能的系统和方法。

背景技术

HTML文档对象模型(DOM)定义了用于制作网页的标准元素集合。“<内联框架>”是这样的元素之一,其指示网络浏览器在出现在外部(“主机”)网页上的指定矩形内部加载不同的(“嵌入式”)网页。嵌入式网页与主机网页隔离。例如,通常禁止来自嵌入式网页的程序脚本与来自主机页面的脚本进行通信,并且在嵌入式网页可能不被信任的情况下禁止强制执行安全性。

HTML5规范还提供了一种消息传递系统,其中,内联框架以及其主机能够通过postMessage API进行通信。通过postMessage发送的消息能够包括结构化的对象。然而,这些结构化的对象不能够包含可执行代码,并且包含JavaScript原语或者另外的嵌套的结构化的对象。因此,内联框架不能够使用postMessage API与主机中嵌入的其他内联框架进行通信。

附图说明

为了容易地识别对任何特定元件或动作的讨论,参考数字中的一个或多个最高有效位指代该元素被首次引入的附图编号。

图1是根据一些示例性实施例的可以在其中部署本公开的网络环境的示意图。

图2是图示了根据一个示例性实施例的跨边界应用的框图。

图3是图示了根据一个示例性实施例的跨边界应用的示例性操作的框图。

图4是图示了根据一个示例性实施例的跨边界应用的示例性操作的序列图。

图5是图示了根据一个示例性实施例的用于跨边界通信API的方法的流程图。

图6是图示了根据一个示例性实施例的用于在第二内联框架处调用API的方法的流程图。

图7是图示了根据一个实施例的用于将来自在第二内联框架处调用的API的结果通信回第一内联框架的方法的流程图。

图8图示了根据一个实施例的例程。

图9是根据示例性实施例的计算机系统形式的机器的示意图,在该计算机系统内可以执行指令集合以使所述机器执行在本文中所讨论的任何一种或多种方法。

具体实施方式

“组件”指代具有由功能或子例程调用、分支点、API或提供对特定处理或控制功能的分区或模块化的其他技术定义的边界的设备、物理实体或逻辑。组件可以经由其与其他组件的接口进行组合以执行机器过程。组件可以是被设计用于与其他组件以及通常执行相关功能的特定功能的程序的一部分一起使用的打包的功能硬件单元。组件可以构成软件组件(例如,被体现在机器可读介质上的代码)或硬件组件。“硬件组件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例性实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或者计算机系统的一个或多个硬件组件(例如,处理器或者一组处理器)可以由软件(例如,应用或应用部分)配置为操作用于执行在本文中所描述的某些操作的硬件组件。硬件组件也可以机械地、电子地或者其任何合适的组合来实现。例如,硬件组件可以包括被永久地配置为执行某些操作的专用电路或逻辑。硬件组件可以是专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件组件还可以包括可编程逻辑或电路,其由软件临时配置为执行某些操作。例如,硬件组件可以包括由通用处理器或者其他可编程处理器执行的软件。一旦通过这样的软件进行配置,硬件组件将成为为执行所配置的功能而独有地定制的特定机器(或机器的特定组件),并且不再是通用处理器。将意识到,在专用并且永久配置的电路中或者在临时配置的电路中(例如,由软件配置)机械地实现硬件组件的决定可以由成本和时间考量来驱动。因此,短语“硬件组件”(或“硬件实现的组件”)应当被理解为包含有形实体,是被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)来以某种方式操作或执行在本文中所描述的某些操作的实体。考虑其中硬件组件被临时配置(例如,编程)的实施例,每个硬件组件不需要在任何一个时间实例被配置或实例化。例如,在硬件组件包括由软件配置为成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间分别被配置为不同的专用处理器(例如,包括不同的硬件组件)。软件相应地配置一个或多个特定处理器,例如,以在一个时间实例上构成特定的硬件组件,并且在不同的时间实例处构成不同的硬件组件。硬件组件能够向其他硬件组件提供信息,或者从其他硬件组件接收信息。因此,所描述的硬件组件可以被认为是通信地耦合的。在同时存在多个硬件组件的情况下,可以通过在两个或多个硬件组件之间的信号传输(例如,通过适当的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件组件的实施例中,可以例如通过在多个硬件组件可以访问的存储器结构中存储和取回信息来实现这些硬件组件之间的通信。例如,一个硬件组件可以执行操作并且将该操作的输出存储在其通信地耦合到的存储器设备中。然后,另外的硬件组件可以在以后的时间访问所述存储器设备以取回和处理所存储的输出。硬件组件还可以发起与输入或输出设备的通信,并且能够在资源(例如,信息的集合)上进行操作。在本文中所描述的示例性方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或永久配置以执行相关操作的一个或多个处理器来执行。无论是被临时配置还是被永久配置,这样的处理器都可以构成处理器实现的组件,这些组件操作用于执行在本文中所描述的一个或多个操作或功能。如在本文中所使用的,“处理器实现的组件”指代使用一个或多个处理器实现的硬件组件。类似地,在本文中所描述的方法可以是至少部分处理器实现的,其中一个或多个特定处理器是硬件的示例。例如,一种方法的操作中的至少一些操作可以由一个或多个处理器或处理器实现的组件来执行。此外,一个或多个处理器还可以操作用于在“云计算”环境中或者作为“软件即服务”(SaaS)来支持相关操作的性能。例如,所述操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)来执行,其中这些操作能经由网络(例如,互联网)和经由一个或多个适当的接口(例如,API)来访问。某些操作的执行可以分布在处理器之间,不仅仅驻留在单个机器内,而是跨多个机器来部署。在一些示例性实施例中,处理器或处理器实现的组件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器场内)。在其他示例性实施例中,处理器或处理器实现的组件可以跨多个地理位置来分布。

“通信网络”指代网络的一个或多个部分,其可以是自组织网络、内联网、外联网、虚拟专用网(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网,互联网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、

“机器存储介质”指代存储可执行指令、例程和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。因此,所述术语应当被理解为包括但不限于固态存储器以及光和磁介质,包括在处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的特定示例包括非易失性存储器,例如包括半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪存设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开中可以互换地使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确排除载波、经调制的数据信号和其他这样的介质,其中的至少一些被术语“信号介质”覆盖。

“处理器”指代根据控制信号(例如,“命令”、“操作码”、“机器代码”等)操纵数据值的任何电路或虚拟电路(由在实际处理器上执行的逻辑仿真的物理电路),并且其产生被应用于操作机器的对应输出信号。处理器例如可以是中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或者其任意组合。处理器还可以是具有可同时执行指令的两个或更多个独立处理器(有时称为“核心”)的多核心处理器。

“载波信号”指代能够存储、编码或承载用于由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或者其他无形介质以促进对这样的指令的通信。可以经由网络接口设备使用传输介质在网络上发送或接收指令。

“信号介质”指代能够存储、编码或承载用于由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或者其他无形介质以促进软件或数据的通信。术语“信号介质”应当被认为包括任何形式的经调制的数据信号、载波等。术语“经调制的数据信号”意指以对信号中的信息编码的方式设置或改变其一个或多个特性的信号。术语“传输介质”和“信号介质”意指相同的事物,并且在本公开中可以互换地使用。

“计算机可读介质”指代机器存储介质和传输介质两者。因此,所述术语既包括存储设备/介质又包括载波/经调制的数据信号。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开中互换地使用。

“内联框架(内嵌框架(inline frame))”指代嵌入在网站上另一HTML文档内部的HTML文档。内嵌框架HTML元素能够被用于插入来自另一源的内容。

“框架”指代SharePoint框架(SPFx),其是一种支持客户端开发以用于构建SharePoint体验的页面和扩展模型。

以下描述描述了图示出本主题的示例性实施例的系统、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本主题的各种实施例的理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节中的一些或者其他细节的情况下实践本主题的实施例。示例仅代表可能的变化。除非另有明确说明,否则结构(例如,结构组件,诸如模块)是可选的,并且可以被组合或细分,并且操作(例如,在过程、算法或者其他功能中)可以顺序变化或者被组合或细分。

Microsoft的SharePoint产品提供了托管交互式微件(例如,SharePoint客户端网络部件)的能力。网络部件能够以安全模式来托管,这将在SharePoint中托管的页面上在内嵌框架(也被称为内联框架)内部呈现网络部件。内联框架中的网络部件不能够影响主机页面。能够使用配置面板(“属性窗格”)来配置SharePoint网络部件,所述面板是主机页面的一部分。在安全模式下的网络部件在单独的内联框架而不是主机页面内部呈现属性窗格。用于网络部件到属性窗格的当前框架(并且反之亦然)的通信是通过在两个内联框架之间公开的API进行的。

处于安全模式的网络部件需要能够使用这些相同的API,但是当前的通信模型不提供用于两个内联框架进行通信的机制(可能是跨域通信)。可执行函数不能够在内联框架与其主机之间或者在两个内联框架之间传递。本申请描述了一种提供以下特征的解决方案:

·网络部件和属性窗格在两个单独的内联框架中呈现,并且可能不具有相同的原点。

·网络部件能够使用当前的属性窗格API的集合,并且反之亦然(例如,处于安全模式的网络部件的行为与未以安全模式呈现的相同网络部件的行为没有不同)。

·通信信道是安全的、声明性的,并且不涉及全局变量。

在一个示例性实施例中,本申请描述了以下示例:在网页上的两个内联框架之间建立安全通信信道,以相同的行为将相同的API调入或调出内联框架,一个内联框架在另一内联框架中安全地调用API,并且主机可以安全地在内联框架中调用API,并且反之亦然。

在一个示例性实施例中,本申请描述了一种用于网络应用的隔离部分跨边界调用API的安全方法。主机网页从主机网页的第一内嵌框架接收第一对象。所述第一对象标识第一应用编程接口(API)。所述主机网页相对针对主机网页的预先定义的API来验证所述第一对象。一旦所述第一对象被验证,主机网页就将第一对象转发到主机网页的第二内嵌框架。第二内嵌框架解析所述第一对象,并且将经解析的第一对象转换为与第二内嵌框架相对应的第二API。

结果,在本文中所描述的方法中的一种或多种方法促进解决跨边界调用API的技术问题。这样,在本文中所描述的方法中的一种或多种方法可以避免针对某些努力或计算资源的需要,否则这些努力或计算资源将在内联框架与其主机之间或者在两个内联框架之间传递可执行函数有关。结果,可以减少由一个或多个机器、数据库或设备(例如,在环境内)所使用的资源。这样的计算资源的示例包括处理器周期、网络流量、存储器使用率、数据存储容量、功耗、网络带宽和冷却容量。

图1是可以在其中实现或部署本公开的一些示例性实施例的网络环境100的示意图。

一个或多个应用服务器104经由网络102向客户端设备110的形式的联网的用户设备提供服务器侧功能。网络客户端110(例如,浏览器)和程序客户端108(例如,“app”)被托管并且在网络客户端110上被执行。

应用程序接口(API)服务器118和网络服务器120向应用服务器104提供相应的编程和网络接口。特定的应用服务器116托管网页托管应用122(例如,MicrosoftSharepoint)和包括组件、模块和/或应用的跨边界通信应用124。

网络客户端110经由网络服务器120所支持的网络接口与网页托管应用122通信。类似地,编程客户端108经由由应用程序接口(API)服务器118提供的编程接口与网页托管应用122通信。第三方应用114例如可以是向客户端设备106提供服务的服务应用。网页托管应用122向客户端设备106的网络客户端110提供具有服务应用的主机网页。跨边界通信应用124使得主机网页的一个内联框架中的网络部件能够与主机网页的另一内联框架中的另一网络部件进行通信。

应用服务器116被示为与数据库服务器126通信地耦合,数据库服务器126促进访问信息存储库或数据库128。在示例性实施例中,数据库128包括存储待发布和/或由网页托管应用122处理的信息的存储设备。

另外,示出了在第三方服务器112上执行的第三方应用114具有经由由应用程序接口(API)服务器118提供的编程接口对应用服务器116的编程访问。例如,第三方应用114使用从应用服务器116取回的信息,可以支持在由第三方托管的网站上的一项或多项特征或功能。

在图1中示出或者与图1相关联的任何系统或机器(例如,数据库、设备、服务器)可以包括专用(例如,专业的或者以其他方式非泛型的)计算机或者在其中实现,所述专用计算机已被修改(例如,通过软件配置或编程,诸如应用、操作系统、固件、中间件或者其他程序的一个或多个软件模块),以执行针对该系统或机器在本文中所描述的功能中的一项或多项功能。例如,下文参考图5讨论了能够实现在本文中所描述的方法中的任意一种或多种方法的专用计算机系统,并且这样的专用计算机可以相应地是用于执行在本文中所讨论的方法中的任意一种或多种方法的单元。在这样的专用计算机的技术领域内,与缺少在本文中所描述的结构或以者其他方式不能够执行在本文中所讨论的功能的其他专用计算机相比,已经通过在本文中所描述的结构进行修改以执行在本文中所讨论的功能的专用计算机在技术上得到了改进。因此,根据在本文中所讨论的系统和方法配置的专用机器对相似的专用机器的技术进行了改进。

此外,在图1中所图示的任何两个或更多个系统或机器可以被组合成单个系统或机器,并且在本文中针对任何单个系统或机器所描述的功能可以被细分为多个系统或机器。另外地,任何数量和类型的客户端设备106可以被体现在网络环境100内。此外,网络环境100的一些组件或功能可以被组合或位于网络环境100中的别处。例如,客户端设备106的一些功能可以被体现在应用服务器116上。

图2图示了根据一个示例性实施例的跨边界通信应用124。跨边界通信应用124包括API模块202、JSON对象模块204和验证模块206。API模块202建立主机能够用于验证来自内联框架的消息请求的预先定义API的列表。JSON对象模块204检测到在主机网页的第一内联框架中调用API。JSON对象模块204构造从第一内联框架描述所调用的API的对象,并且为函数调用提供自变量(argument)(如果有的话)。

以下代码例示说明了函数调用的示例:

{

"foobar":{

"type":"_function_",

"name":"foobarFunctionName",

"args":{

...

}

}

在另一示例性实施例中,客户端设备106包括JSON对象模块204并构造对象。

所述第一内联框架将对象发送到主机网页。然后,所述主机网页相对预先定义或已知的API来验证对象。在一个示例性实施例中,验证模块206相对来自API模块202的已知API签名来验证对象。一旦验证模块206验证了对象,主机网页就将对象传递给主机网页的第二内联框架。第二内联框架中的框架将解析对象,并且利用所提供的参数(如果有的话)将其转换为对应的API调用。

在另一示例性实施例中,如果存在需要通信回第一内联框架的结果,则第二内联框架中的框架将构造描述所述结果的对象,并且将所述对象作为消息发送给主机网页。主机网页验证响应,并且然后将其发送回第一内联框架。

图3图示了根据一个示例性实施例的跨边界应用的示例性操作。内联框架A 304发送表示针对内联框架B 306的函数调用的JSON对象。主机页面302拦截JOSN对象,并且将其与所有相同数据一起发送给目标内联框架(第二内联框架B 306)以处理JSON对象。内联框架B 306接收并且处理JSON对象。具体地,内联框架B 306寻找针对函数回调的预先定义的符号。一旦内联框架B 306验证了用于函数回调的预先定义的符号,内联框架B 306就形成与内联框架A 304中调用的API相同的API。注意,内联框架A 304和内联框架B 306位于相同的域A 308上。主机(例如,主机页面302)在不同的域上。在另一示例性实施例中,内联框架A304和内联框架B 306来自不同的域。

图4是图示了根据一个示例性实施例的跨边界应用的示例性操作的序列图400。在操作402处,在内联框架A 304中调用API。在操作404处,网络主机页面的框架构造描述API的对象,并且可选地提供用于函数调用的自变量。“框架”可以指代网页共享模型(诸如Microsoft的SharePoint框架TM)。在操作406处,内联框架A 304将对象发送给主机页面302。在操作408处,主机页面302相对已知的或预先定义的API来验证对象。在操作410处,一旦主机页面302已经验证了对象,主机页面302就将对象转发到内联框架B 306。在操作412处,内联框架B 306解析所述对象并且将所述对象转换为具有提供的自变量(如果有的话)的对应API调用。在操作414处,内联框架B 306构造描述API调用的结果的对象。在操作416处,内联框架B 306将对象或包含所述对象的消息发送给主机页面302。在操作418处,主机页面302验证从内联框架B 306接收到的对象。在操作420处,主机页面302将对象转发到内联框架A 304。

图5图示了根据一个示例性实施例的用于跨边界通信API的方法500。方法500中的操作可以由跨边界通信应用124或网页托管应用122使用上文参考图2所描述的组件(例如,模块、引擎)来执行。因此,方法500由参照跨边界通信应用124的示例进行描述。然而,应当意识到,方法500的操作中的至少一些操作可以被部署在各种其他硬件配置上,或者由位于别处的相似组件来执行。例如,所述操作中的一些操作可以在网页托管应用122或第三方应用114处执行。

在框502处,API模块202定义主机的多个API以验证来自内联框架的消息请求。在框504处,跨边界通信应用124建立具有第一内联框架的网络部分和第二内联框架的属性窗格的消息端口。在框506处,验证模块206检测到在第一内联框架中调用了API(对应于预先定义的API之一)。在框508处,主机页面302在第二内联框架中调用与在第一内联框架中调用的API相对应的API。在另一示例性实施例中,主机页面302基于在第一内联框架处调用的API在第二内联框架处调用API。

图6图示了根据一个示例性实施例的用于在第二内联框架处调用API的方法600。方法600中的操作可以由跨边界通信应用124或网页托管应用122使用上文参考图2所描述的组件(例如,模块、引擎)来执行。因此,方法600由参考跨边界通信应用124的示例进行描述。然而,应当意识到,方法600的操作中的至少一些操作可以被部署在各种其他硬件配置上或者由位于别处的相似组件来执行。例如,所述操作中的一些操作可以在网页托管应用122或第三方应用114处执行。

方法600在开始框604处开始,并且在结束框614处结束。在框602处,JSON对象模块204构造描述在第一内联框架中调用的API的对象。在框606处,主机从第一内联框架接收对象。在决策框608处,主机相对已知的API签名来验证对象。如果在决策框608处验证了对象,则主机在框610处将对象通信给第二内联框架。如果在决策框608处未验证对象,则方法600在结束框614处结束。在框612处,第二内联框架解析对象,并且将所述对象转换为具有所提供的自变量(如果有的话)的对应API调用。

图7图示了根据一个实施例的用于将来自在第二内联框架处调用的API的结果通信回第一内联框架的方法700。方法700中的操作可以由跨边界通信应用124或网页托管应用122使用上文参考图2所描述的组件(例如,模块、引擎)来执行。因此,参考跨边界通信应用124以示例方式描述了方法700。然而,应当意识到,方法700的操作中的至少一些操作可以被部署在各种其他硬件配置上或者由别处的相似组件来执行。例如,所述操作中的一些操作可以在网页托管应用122或第三方应用114处执行。

在框702处,主机从第二内联框架接收消息。所述消息包括描述在第二内联框架处对API的调用的结果的结果对象。在框704处,主机基于已知的API来验证来自第二内联框架的消息。在框706处,主机将消息通信给第一内联框架。

图8图示了根据一个实施例的例程800。在框802中,例程800在主机网页处从主机网页的第一内嵌框架接收第一对象,所述第一对象标识第一应用编程接口(API)。在框804中,例程800通过主机网页相对针对主机网页的预先定义的多个API来验证第一对象。在框806中,例程800响应于验证第一对象,将第一对象转发到主机网页的第二内嵌框架,所述第二内嵌框架被配置为解析第一对象并且将经解析的第一对象转换为对应于第二内嵌框架的第二API。

图9是机器900的示意性表示,在机器900内可以执行用于使机器900执行在本文中所讨论的方法中的任意一种或多种方法的指令908(例如,软件、程序、应用、小应用、app或者其他可执行代码)。例如,指令908可以使机器900执行在本文中所描述的任何一种或多种方法。指令908将通用的、未编程的机器900转换为被编程为以所描述的方式执行所描述和示出的功能的特定机器900。机器900可以作为独立设备来操作,或者可以被耦合(例如,联网)到其他机器。在网络部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户端机器的容量来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器900可以包括但不限于:服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、PDA、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能器具)、其他智能设备、网络器具、网络路由器、网络交换机、网桥、或者能够顺序或以其他方式执行指定机器900将采取的动作的指令908的任何机器。此外,尽管仅图示出了单个机器900,但是术语“机器”也应当被视为包括单独地或共同地执行指令908以执行在本文中所讨论的任何一种或多种方法的机器的集合。

机器900可以包括处理器902、存储器904和I/O组件942,其可以被配置为经由总线944彼此通信。在示例性实施例中,处理器902(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC、射频集成电路(RFIC)、另一处理器或者其任何合适的组合)可以包括例如执行指令908的处理器906和处理器910。术语“处理器”旨在包括可以包括可以同时执行指令的两个或更多个独立处理器(有时称为“核心”)的多核心处理器。尽管图9示出了多个处理器902,但是机器900可以包括具有单个核心的单个处理器、具有多个核心的单个处理器(例如,多核心处理器)、具有单个核心的多个处理器、具有多个核心的多个处理器、或者其任何组合。

存储器904包括主存储器912、静态存储器914和存储单元916,两者都能经由总线944对处理器902进行访问。主存储器904、静态存储器914和存储单元916存储体现在本文中所描述的方法或功能中的任何一个或多个方法或功能的指令908。在由机器900对指令的执行期间,指令908还可以全部或部分地驻留在主存储器912内、在静态存储器914内、在存储单元916内的机器可读介质918内、在处理器902中的至少一个处理器内(例如,在处理器的高速缓存内)、或者其任何合适的组合。

I/O组件942可以包括各种各样的组件,以接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量结果等。被包含在特定机器中的特定I/O组件942将取决于机器的类型。例如,诸如移动电话的便携式机器可以包括触摸输入设备或者其他这样的输入机构,而无头服务器机器将可能不包括这样的触摸输入设备。将意识到,I/O组件942可以包括在图9中未示出的许多其他组件。在各种示例性实施例中,I/O组件942可以包括输出组件928和输入组件930。输出组件928可以包括视觉组件(例如,显示器,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪、或阴极射线管(CRT))、声学组件(例如,扬声器)、触觉组件(例如,振动电动机、阻力机构)、其他信号发生器等。输入组件930可以包括字母数字输入组件(例如,键盘、被配置为接收字母数字输入的触摸屏、光电键盘、或者其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或者其他定点工具)、触觉输入组件(例如,物理按钮,提供触摸或触摸手势的位置和/或力的触摸屏,或者其他触觉输入组件)、音频输入组件(例如,麦克风)等。

在另外的示例性实施例中,I/O组件942可以包括生物统计组件932、运动组件934、环境组件936或位置组件938,以及多种其他组件。例如,生物统计组件932包括用于检测表情(例如、手表情、面部表情、声音表情、身体手势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、汗液或脑波)、识别个人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的组件。运动组件934包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋转传感器组件(例如,陀螺仪)等。环境组件936包括例如照明传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如,气压计)、声学传感器组件(例如,检测背景噪音的一个或多个麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,用于针对安全性检测有害气体浓度或者测量大气中污染物的气体检测传感器)、或者可以提供与周围物理环境对应的指示、测量或信号的其他组件。位置组件938包括位置传感器组件(例如,GPS接收器组件)、高度传感器组件(例如,检测可以从中得出高度的气压的高度计或气压计)、方向传感器组件(例如,磁力计)等。

可以使用多种技术来实现通信。I/O组件942还包括通信组件940,通信组件940可操作用于分别经由耦合件924和耦合件926将机器900耦合到网络920或设备922。例如,通信组件940可以包括网络接口组件或者与网络920接口的另一合适的设备。在另外的示例中,通信组件940可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(NFC)组件、

此外,通信组件940可以检测标识符或者包括可操作用于检测标识符的组件。例如,通信组件940可以包括射频识别(RFID)标签读取器组件、NFC智能标签检测组件、光学读取器组件(例如,用于检测诸如通用产品代码(UPC)条形码的一维条形码的光学传感器)条形码、多维条形码(例如快速响应(QR)代码、Aztec代码、数据矩阵、Dataglyph、MaxiCode、PDF417、Ultra Code、UCC RSS-2D条形码和其他光学代码)、或者声学检测组件(例如,麦克风以识别标记的音频信号)。另外,可以经由通信组件940导出各种信息,诸如经由互联网协议(IP)地理位置的位置、经由

各种存储器(例如,存储器904、主存储器912、静态存储器914和/或处理器902的存储器)和/或存储单元916可以存储体现在本文中所描述的任何一种或多种方法或功能或者由其使用的一组或多组指令和数据结构(例如,软件)。这些指令(例如,指令908)当由处理器902执行时,引起各种操作以实现所公开的实施例。

指令908可以使用传输介质,经由网络接口设备(例如,通信组件940中包括的网络接口组件),并且使用多个已知传输协议中的任一协议(例如,超文本传输协议(HTTP)),通过网络920进行发送或接收。类似地,可以使用传输介质经由耦合926(例如,对等耦合)将指令908发送或接收到设备922。

尽管已经参考特定示例性实施例描述了实施例,但是显而易见的是,可以对这些实施例进行各种修改和改变,而不背离本公开的更宽泛的范围。因此,说明书和附图应当被认为是说明性的而不是限制性的。形成其一部分的附图以说明而非限制的方式示出了可以实践本主题的特定实施例。足够详细地描述了所示的实施例,以使本领域技术人员能够实践本文公开的教导。可以利用其他实施例并且从中得出其他实施例,使得可以在不背离本公开的范围的情况下进行结构和逻辑上的替换和改变。因此,不应当在限制意义上理解该详细描述,并且各种实施例的范围仅由随附的权利要求以及这些权利要求所赋予的等效物的全部范围来限定。

在此,本发明主题的这些实施例可以单独地和/或全部地由术语“发明”来指代,仅是为了方便,而无意在实际上公开了多于一个发明时将本申请的范围限制为任何单个发明或发明构思。因此,尽管本文已经图示和描述了特定的实施例,但是应当理解,被计算为实现相同目的的任何布置可以代替所示的特定实施例。本公开意图覆盖各种实施例的任何和所有修改或变化。通过阅读以上描述,上述实施例的组合以及本文中未具体描述的其他实施例对于本领域技术人员将是显而易见的。

提供本公开的摘要以允许读者快速地确定技术公开的性质。提交本文档的前提是,其不会被用于解释或限制权利要求的范围或含义。另外,在前面的详细描述中,能够看到,出于简化本公开的目的,在单个实施例中将各种特征组合在一起。本公开的该方法不应当被解释为反映了以下意图:所要求保护的实施例需要比每个权利要求中明确叙述的特征更多的特征。而是,如所附权利要求所反映的,发明主题在于少于单个公开实施例的所有特征。因此,以下权利要求由此被并入到详细描述中,其中每个权利要求独立地作为单独的实施例。

示例

示例1是一种计算机实现的方法,包括:在主机网页处从所述主机网页的第一内嵌框架接收第一对象,所述第一对象标识第一应用编程接口(API);通过所述主机网页相对针对所述主机网页的预先定义的多个API来验证所述第一对象;以及响应于验证所述第一对象,将所述第一对象转发到所述主机网页的第二内嵌框架,所述第二内嵌框架被配置为解析所述第一对象,并且将经解析的第一对象转换为与所述第二内嵌框架相对应的第二API。

在示例2中,示例1的主题还包括:从所述第二内嵌框架接收消息,所述消息包括描述在所述第二内嵌框架中调用的所述第二API的结果的第二对象;在所述主机网页处验证所述消息;以及响应于验证所述消息,将所述消息转发到所述第一内嵌框架。

在示例3中,示例2的主题,其中,所述第一内嵌框架包括网络部件项,所述网络部件项包括在所述第一内嵌框架内操作的服务器侧受控应用,并且其中,所述第二内嵌框架包括所述主机网页的配置窗格,所述配置窗格被配置为在所述第二内嵌框架内部呈现。

在示例4中,示例1的主题,其中,所述第一内嵌框架包括被配置为在所述第一内嵌框架内操作的第一网络部件项,并且其中,所述第二内嵌框架包括被配置为在所述第二内嵌框架内操作的第二网络部件项。

在示例5中,示例1的主题,还包括:在所述主机网页与所述第一内嵌框架之间建立第一消息端口;以及在所述主机网页与所述第二内嵌框架之间形成第二消息端口。

在示例6中,示例1的主题,其中,所述第一对象还包括用于调用与所述第一API相对应的功能的自变量,并且其中,所述第二内嵌框架被配置为解析所述第一对象,并且利用来自所述第一对象的所述自变量将所述第一对象转换为所述第二API。

在示例7中,示例1的主题,其中,在所述主机网页处的所述第一内嵌框架的构架被配置为响应于所述第一内嵌框架调用所述第一API而构造所述第一对象。

在示例8中,示例2的主题,其中,在所述主机网页处的所述第二内嵌框架的构架被配置为响应于在所述第二内嵌框架处调用所述第二API而构造所述第二对象。

在示例9中,示例1的主题,还包括:形成能够被用于验证来自所述第一内嵌框架的请求的预先定义的多个API的列表。

在示例10中,示例1的主题,还包括:针对多个主机来定义多个公共应用编程接口(API),所述API被配置为验证在所述多个主机之间的消息请求;利用所述第一内嵌框架的网络部件和所述第二内嵌框架的属性窗格来建立消息端口;检测在所述第一内嵌框架处调用所述多个公共API中的API;以及基于在所述第一内嵌框架处调用的API而在所述第二内嵌框架处调用所述API。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号