基于AJAX的跨域请求处理方法、装置及设备与流程

文档序号:16314546发布日期:2018-12-19 05:25阅读:282来源:国知局
基于AJAX的跨域请求处理方法、装置及设备与流程

本申请实施例涉及网页开发领域,特别涉及一种基于ajax(asynchronousjavascriptandxml,异步的javascript与xml技术)的跨域请求处理方法、装置及设备。

背景技术

跨域请求是在浏览器上当前访问的网站向另一个网站发送请求获取数据的过程。例如存在两个子域名不同的网站:http://www.example.com(旧域名)和http://www.e.example.com(新域名)。当在浏览器上访问新域名的过程中,需要向旧域名获取数据,则需要浏览器处理跨域请求。

相关技术中提供了一种利用ajaxjsonp(javascriptobjectnotationwithpadding,基于javascript语言的轻量级的数据交换格式的跨域处理)方式来处理跨域请求的方法。jsonp是一种利用在网页页面中创建<script>节点的方法向不同域提交http请求的方法,而script标签的src属性是没有跨域限制的,从而可以解决跨域提交ajax请求的问题。

但ajaxjsonp方式不支持csrf(cross-siterequestforgery,跨站请求伪造)校验逻辑,无法保证异步处理请求的安全性。



技术实现要素:

本申请实施例提供了一种基于ajax的网页获取方法、装置、设备及存储介质,可以解决相关技术中跨域请求方式不支持csrf校验逻辑的问题。所述技术方案如下:

根据本申请的一个方面,本申请提供了一种基于ajax的跨域请求处理方法,应用于运行有浏览器的终端中,该方法包括:

在访问第一域名提供的网页时,加载网页中由第二域名提供的代理脚本;

通过代理脚本加载第二域名提供的代理网页文件中的ajax对象;

当网页中发起第一ajax方法时,提取第一ajax方法请求的ajax对象的url参数;

当url参数与第一域名属于不同域时,调用代理脚本对第二域名提供的ajax对象进行访问。

根据本申请的另一方面,本申请提供了一种基于ajax的跨域请求处理装置,该装置包括:

加载模块,用于在访问第一域名提供的网页时,加载网页中由第二域名提供的代理脚本;通过代理脚本加载第二域名提供的代理网页文件中的ajax对象;

提取模块,用于当网页中发起第一ajax方法时,提述第一ajax方法请求的ajax对象的url参数;

调用模块,用于当url参数与第一域名属于不同域时,调用代理脚本对第二域名提供的ajax对象进行访问。

根据本申请的另一方面,本申请提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述第一方面所述的基于ajax的跨域请求处理方法。

根据本申请的另一方面,本申请提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述第一方面所述的基于ajax的跨域请求处理方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过在第二域名中设置代理脚本和代理网页文件,在访问第一域名提供的网页的过程中,当需要跨域请求第二域名的数据时,通过调用代理脚本对第二域名提供的代理网页文件中的ajax对象进行访问,可以在不改变原有的网页请求逻辑的情况下,加入上述跨域请求逻辑,既实现了基于ajax的跨域请求,又保证了异步处理请求的安全性,避免跨站请求伪造的安全风险。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个示例性实施例提供的基于ajax的跨域请求处理方法的实施环境框图;

图2是本申请一个示例性实施例提供的基于ajax的跨域请求处理方法的流程图;

图3是本申请另一示例性实施例提供的基于ajax的跨域请求处理方法的流程图;

图4是本申请另一示例性实施例提供的基于ajax的跨域请求处理方法的流程图;

图5是本申请一个示例性实施例提供的基于ajax的跨域请求处理装置的框图;

图6是本申请一个示例性实施例提供的终端的结构框图;

图7是本申请另一个示例性实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例涉及的若干个名词进行解释:

跨域请求:是指当前发起的请求的域与该请求指向的资源所在的与不同,这里协议、域名、端口号皆相同的就是同域。以下所示实施例是对主域名相同、子域名不同的跨域请求的实现方案的说明。

ajax:是指一种创建交互式网页应用的网页开发技术。其中,xml是可扩展标记语言(extensiblemarkuplanguage,xml)。ajax可以通过在浏览器后台与服务器进行少量的数据交换从而使网页实现异步更新。所谓“异步”,是发送请求后不需要等待服务器响应,将请求缓存至任务列表等待响应,继续下一请求的发送。

xmlhttprequest:一种浏览器对象,可用于模拟http的get和post请求,配合javascript可以实现页面数据在无刷新下的定时数据更新,浏览器可以通过xmlhttprequest取回所有类型的资源数据。

post:post方法是http(hypertexttransportprotocol,超文本传输协议)中的一个重要组成部分,post方法一般用来向目的服务器发送更新请求,并附有请求实体。

iframe:是html中的一种标签。作用是文档中的文档,或浮动的框架。iframe会创建包含另一个文档的内联框架,在网页中通过iframe可以浏览另一代理网页。

csrf(cross-siterequestforgery,跨站请求伪造),也被称为“oneclickattack”或者“sessionriding”,通常缩写为csrf或者xsrf,是一种对网站的恶意利用。攻击者在用户已经登陆目标网站之后,诱使用户访问一个攻击页面,获取用户的身份信息,利用目标网站对用户的信任,以用户的身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击的目的。

代理脚本,用于储存javascript脚本的文件,是网页前台脚本。代理脚本用于实现网页中的动态操作。

域名(domainname):简称域名、网域,是由一串用点分隔的名字组成的internet上某一台计算机或计算机组的名称,用于在网页传输时标识计算机的电子方位(有时也指地理位置)。

图1是本申请一个示例性实施例提供的基于ajax的跨域请求处理方法的实施环境的框图。该系统包括:终端120、服务器集群140和通信网络160,终端120和服务器集群140通过通信网络160连接。

终端120可以是智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。终端120中安装有操作系统和至少一个应用程序。该操作系统可以是安卓(android)操作系统或苹果(ios)操作系统。终端120中安装和运行有应用程序,该应用程序可以是浏览器12。终端120可以运行浏览器12对第一域名14的网页进行访问。在访问第一域名的网页的过程中,通过通信网络160从服务器集群140获取第二域名16提供的代理脚本26,加载该代理脚本26处理基于ajax的跨域请求,实现对第二域名16下的ajax对象的访问。

在一些实施例中,第一域名14是指旧域名,第二域名16是指新域名。该旧域名和新域名是具有相同的主域名但子域名不同的两个域名。例如,旧域名是“wetest.example.com”,新域名是“fsight.example.com”,旧域名对应的软件逻辑中提供有一部分ajax对象或数据,新域名对应的软件逻辑中也提供有一部分ajax对象或数据。

服务器集群140可以是一台或者多台服务器,该服务器可以是由浏览器或浏览器主页对应的供应商设置的;或者是由非浏览器或浏览器主页对应的第三方供应商设置的。该服务器可以是网页服务器,网页服务器包括第一域名14对应的代码逻辑和第二域名16对应的代码逻辑,第一域名14为浏览器提供了网页文件22,第二域名16为浏览器提供了代理脚本26以及代理网页文件24。在一个实施例中,该代理脚本26可以是proxy.js脚本,具有加载代理网页文件24以及运行代理网页文件24中的ajax对象和post对象的能力;该代理网页文件24可以命名为proxy.html文件,该proxy.html文件中提供有至少一个ajax对象和post对象。

在一些实施例中,第一域名14下存储的数据和第二域名16下存储的数据可以同时存储在同一台或者多台网页服务器上,或者第一域名14下存储的数据和第二域名16下存储的数据可以分别存储在不同的网页服务器上。

通信网络160用于连接终端120和服务器集群140。通信网络160可以是有线网络或无线网络;有线网络可以是城域网、局域网、光纤网等;无线网络可以是移动通信网络或无线保真网络(wirelessfidelity,wifi)。

图2是本申请一个示例性实施例提供的基于ajax的跨域请求处理方法的流程图,以该方法应用于图1所示的系统中为例来举例说明,该方法包括:

步骤201,在访问第一域名提供的网页时,加载网页中由第二域名提供的代理脚本。

终端打开浏览器,在浏览器的浏览窗口中访问第一域名下的网页,上述网页存储在网页服务器中。

可选地,上述网页中包括有第二域名下的代理脚本,终端在加载该网页的过程中从网页服务器中获取第二域名下的代理脚本,并加载第二域名提供的代理脚本。

可选的,网页是由html编写的纯文本文件;代理脚本是由javascript脚本语言编写的,是基于对象和事件驱动并具有相对安全性的脚本文件,可以应用于html网页中。

可选的,第二域名与第一域名具有相同的主域名和不同的子域名。

步骤202,通过代理脚本加载第二域名提供的代理网页文件中的ajax对象。

在加载到代理脚本后,终端通过代理脚本加载第二域名提供的代理网页文件中的ajax对象。本步骤可选包括如下步骤:

终端通过代理脚本加载第二域名提供的代理网页文件,代理网页文件中包括隐藏的iframe;通过代理脚本获取iframe返回的第二域名提供的ajax对象。其中,隐藏的iframe是指该部分内容不会显示在网页中,用户无法直接感知。该隐藏的iframe用于加载和提供第二域名下的ajax对象以及post对象。

可选的,终端通过代理脚本获取iframe中由第二域名提供的ajax对象以及post对象。

可选的,ajax对象包括xmlhttprequest,用于从网页服务器中取回数据。

步骤203,当网页中发起第一ajax方法时,提取第一ajax方法请求的ajax对象的url参数。

终端通过代理脚本加载第二域名提供的ajax对象之后,在网页中发起第一ajax方法,提取第一ajax方法请求的ajax对象的url(uniformresourcelocator,统一资源定位符)参数,该url参数是待访问数据的url,该url的前半部分为域名。

可选的,第一ajax方法包括针对某一ajax对象的请求和回调方法。

步骤204,当url参数与第一域名属于不同域时,调用代理脚本对第二域名提供的ajax对象进行访问。

对于第一ajax方法所要请求的ajax对象,终端根据提取的该ajax对象中的url参数,判断url参数是否与第一域名属于不同域;当url参数与第一域名属于不同域(也即url参数与第二域名属于同一域)时,调用代理脚本对第二域名提供的ajax对象进行访问。

综上所述,本实施例提供的跨域请求处理方法,通过在第二域名中设置有代理脚本和代理网页文件,在访问第一域名提供的网页的过程中,当需要跨域请求第二域名的数据时,通过调用代理脚本对第二域名提供的代理网页文件中的ajax对象进行访问,可以在不改变原有的网页请求逻辑的情况下,加入上述跨域请求逻辑,既实现了基于ajax的跨域请求,又保证了异步处理请求的安全性,避免跨站请求伪造的安全风险。

另外,当程序设计的整体相当庞大时,相关技术中跨域请求成本会比较高,上述技术方案通过在第二域名中设置代理脚本和代理网页文件,对其它部分尽量不修改的前提下,能够降低跨域请求的实现成本。

基于图2所示的示例性实施例,对基于ajax的跨域请求处理方法做进一步的阐释说明。图3是本申请另一示例性实施例提供的基于ajax的跨域请求处理方法的流程图,本实施例以该方法应用于图1所示的系统中为例来举例说明,该方法包括:

步骤301,在访问第一域名提供的网页时,加载网页中由第二域名提供的代理脚本。

终端打开浏览器,在浏览器的浏览窗口中访问第一域名下的网页,上述网页存储在网页服务器中。

可选地,上述网页中包括有第二域名提供的代理脚本,终端在加载该网页的过程中从网页服务器中获取第二域名下的代理脚本,并加载第二域名提供的代理脚本。

可选地,浏览器后台程序将代理脚本以及代理网页文件的域名设置为目标主域名,目标主域名是第二域名与第一域名具有的相同的主域名,用程序语言表示如下:

document.domain=‘a.com’;//将代理脚本以及代理网页文件的域名重新

设置主域名为‘a.com’//。

上述语句是javascript语句;浏览器后台程序执行该代理脚本。

步骤302,通过代理脚本加载第二域名提供的代理网页文件,代理网页文件中包括隐藏的行内框架。

浏览器通过代理脚本加载第二域名提供的代理网页文件,代理网页文件中包括隐藏的iframe;通过代理脚本获取iframe返回的第二域名提供的ajax对象。其中,隐藏的iframe是指该部分内容不会显示在网页中,用户无法直接感知。该隐藏的iframe用于加载和提供第二域名下的ajax对象以及post对象。

可选的,终端通过代理脚本获取iframe中由第二域名提供的ajax对象以及post对象。可选地,浏览器中还设置有标签(flag)位,当代理脚本未加载完第二域名提供的ajax对象及post对象时,该标签(flag)位的取值为0;当代理脚本已经加载完第二域名提供的ajax对象及post对象时,该标签(flag)位的取值为1。

可选的,ajax对象中包括xmlhttprequest,用于从网页服务器中取回第二域名提供的数据。

步骤303,通过代理脚本获取行内框架返回的第二域名提供的ajax对象。

终端通过代理脚本获取iframe返回的第二域名提供的ajax对象。可选的,iframe根据生成函数生成ajax对象,并通过代理脚本的获取函数向终端返回第二域名提供的ajax对象。

可选的,ajax对象包括xmlhttprequest,用于从网页服务器中取回代理网页文件;xmlhttprequest携带有包括url参数的post请求。其中,xmlhttprequest可以用于发送post请求、get请求、put请求、delete请求,本实施例中xmlhttprequest携带post请求进行数据请求为例进行说明。

步骤304,当网页中发起第一ajax方法时,提取第一ajax方法请求的ajax对象的url参数。

终端获得ajax对象后,代理脚本在网页中发起第一ajax方法,第一ajax方法用于向服务器发送ajax对象。浏览器通过代理脚本拦截并钩取ajax对象,提取第一ajax方法请求的ajax对象的url参数,url参数包括存储代理网页文件的主机名称。

可选地,该第一ajax方法是由用户操作网页来发起的,或者,该第一ajax方法是由网页中的代码在运行过程中自行发起的。

在第一ajax方法被发起时,代理脚本通过iframe对第二域名提供的ajax对象的加载过程可能结束,也可能是未结束。

步骤305,通过代理脚本重载第一域名下的第二ajax方法。

终端通过代理脚本重载第一域名下的第二ajax方法,使上述第二ajax方法能够判断url参数中的主机名称是否与第一域名的主机名称相同,从而确定对ajax对象的访问请求是否为跨域请求。

可选的,使用新的程序逻辑将第二ajax方法重新写入程序中,用程序语言表示如下:

步骤306,通过重载后的第二ajax方法判断url参数中的主机名称是否与第一域名的主机名称相同。

终端通过重载后的第二ajax方法判读url参数中的主机名称是否与第一域名的主机名称相同,当判断结果为不相同时,进入步骤307;当判断结果相同时,进入步骤312。

步骤307,当两个主机名称不相同时,确定第一ajax方法中的url参数与第一域名不同域。

当url参数中的主机名称与第一域名的主机名称不相同,也即url参数中的主机名称与第二域名的主体名称相同时,终端确定第一ajax方法中的url参数与第一域名不同域,进入步骤308。

步骤308,判断代理脚本对第二域名提供的ajax对象是否加载完毕。

浏览器判断代理脚本对第二域名提供的ajax对象是否加载完毕。可选的,浏览器通过任务栈的标志位判断代理脚本对iframe是否加载完毕,当标志位为“ture”时,代理脚本对iframe中由第二域名提供的ajax对象加载完毕,进入步骤309;当标志位为“false”时,代理脚本对iframe中由第二域名提供的ajax对象未加载完毕,进入步骤310。

步骤309,当代理脚本对第二域名提供的ajax对象加载完毕时,通过代理脚本根据请求调用第二域名提供的ajax对象,并在第二域名返回的ajax对象中传递调用回调方法。

当代理脚本对第二域名提供的ajax对象加载完毕时,终端通过代理脚本根据请求调用第二域名提供的ajax对象。

可选的,浏览器通过代理脚本向服务器发送请求,请求携带第二域名提供的ajax对象,ajax对象中包括post请求,post请求携带url参数;第二域名对应的服务器接收请求,之后通过解析器(domainnameserver,dns)对post请求携带的url参数进行解析;第二域名对应的服务器接收请求,根据url参数获得数据,通过该ajax对象的回调方法将该数据回传给浏览器。

步骤310,当代理脚本对第二域名提供的ajax对象尚未加载完毕时,通过代理脚本将第一ajax方法中的请求和回调对象缓存至任务列表中。

当代理脚本对第二域名提供的ajax对象尚未加载完毕时,终端通过代理脚本将第一ajax方法中的请求和回调对象缓存至任务列表中,等待执行,直至代理脚本对第二域名提供的ajax对象加载完毕,进入步骤311。

步骤311,等待代理脚本对第二域名提供的ajax对象加载完毕时,通过代理脚本根据任务列表中缓存的请求调用第二域名提供的ajax对象,并在第二域名返回的ajax对象中传递调用回调方法。

当代理脚本对第二域名提供的ajax对象加载完毕时,终端通过代理脚本对任务列表中缓存的任务进行顺序执行,当代理脚本对任务列表中缓存的请求调用第二域名提供的ajax对象,终端通过代理脚本向第二域名对应的服务器发送请求,请求携带第二域名提供的ajax对象,ajax对象中包括post请求,post请求携带url参数;第二域名对应的服务器接收请求,根据url参数获得数据,通过该ajax对象的回调方法将该数据回传给浏览器。

步骤312,当两个主机名称相同时,确定第一ajax方法中的url参数与第一域名同域,直接使用第一域名下的ajax对象进行数据请求。

当两个主机名称相同时,该第一ajax方法不是跨域请求。浏览器直接使用第一域名提供的ajax对象进行数据请求。

综上所述,通过在第二域名中设置有代理脚本和代理网页文件,在访问第一域名提供的网页的过程中,当需要跨域请求第二域名的数据时,通过调用代理脚本对第二域名提供的代理网页文件中的ajax对象进行访问,可以在不改变原有的网页请求逻辑的情况下,加入上述跨域请求逻辑,既实现了基于ajax的跨域请求,又保证了异步处理请求的安全性,避免跨站请求伪造的安全风险。

另外,该技术方案通过引用代理网页文件实现跨域请求的兼容,不需要对第二域名下的调用点进行逐一修改以实现跨域请求,当程序设计的整体相当庞大时,该技术方案对比相关技术跨域请求实现成本会降低。

在一个如图4所示出的具体例子中,以第一域名是新域名,第二域名是旧域名为例,旧域名中提供有代理脚本(proxy.js)41和代理网页文件(proxy.html)42。上述方法包括:

1.在浏览器访问新域名提供的网页时,通过新域名提供的网页加载旧域名下的proxy.js文件;

2.proxy.js中会加载43一个隐藏的iframe,iframe位于旧域名提供的一个跨域支持的proxy.html页面,当iframe未加载完时标志位44为false。而iframe中会返回一组旧域名下的$.ajax对象及$.post对象。(详情见备注1)。

3.浏览器重载新域名下的第二$.ajax方法45,使第二$.ajax方法具有对请求域名的选择和判断能力。(详情见备注2)。

4.在重载后,当新域名发起第一$.ajax方法时,第二$.ajax方法需要对第一$.ajax方法所请求的ajax对象中的url参数进行分析,判断url参数是否为跨域请求(详情见备注2)。

(1)与新域名同域,则不是跨域请求,直接使用新域名下的ajax对象请求,流程结束。

(2)与新域名不同域,则为跨域请求,则调用proxy.js中的sendajax方法46,执行流程5至流程8。

5.当出现跨域请求时,第二$.ajax方法需要判断当前标志位flag。

(1)标志位为true,表示iframe已经加载完毕,执行流程8。

(2)标志位为false,表示iframe尚未加载完毕,执行流程6。

6.第二$.ajax方法将第一$.ajax方法中的ajax请求和callback回调对象存入任务队列(taskquery)47列表中。

7.当iframe加载完成后,proxy.js会将旧域名下提供的ajax对象和post对象获取并赋予变量中,并将flag字段置为true,并将任务队列47中的ajax对象逐个执行流程8。

8.使用旧域名下的$.ajax对象方法来集成调用ajax对象,并在返回的对象中传递调用回调方法,从而完成异步请求的兼容和代理。

备注1:

旧域名和新域名并不同域,所以需要在proxy.js和proxy.html都将域名设为主域名。

使用方法为js语句:

document.domain='主域名';

此时,porxy.js就可以获取iframe中的js方法和对象了。

备注2:

重载新域名下的第二$.ajax方法,都在proxy.js中实现,部分代码展示及说明:

1.$.ajaxlocal=$.ajax;

2.将原$.ajax方法赋值给$.ajaxlocal;

3.重载$.ajax,通过url的hostname判断来区分是否为预设的跨域请求,如果是,则使用proxy.js中的sendajax方法调用(步骤5至步骤8),如果不是则使用$.ajaxlocal即新域名的ajax对象调用。

以下为本申请的装置实施例,对于装置实施例中未详细阐述的技术细节,可以参考上述一一对应的方法实施例。

图5是本申请一个示例性实施例提供的基于ajax的跨域请求处理装置的框图,该装置通过软件或者硬件或者两者的结合可以实现成为终端的全部或一部分,该装置包括:

加载模块501,用于在访问第一域名提供的网页时,加载网页中由第二域名提供的代理脚本;通过代理脚本加载第二域名提供的代理网页文件中的ajax对象;

提取模块502,用于当网页中发起第一ajax方法时,提取第一ajax方法请求的ajax对象的url参数;

调用模块503,用于当url参数与第一域名属于不同域时,调用代理脚本对第二域名提供的ajax对象进行访问。

在一些实施例中,第一ajax方法中包括针对ajax对象的请求和回调方法;

调用模块503,包括:

调用子模块53,用于当代理脚本对第二域名提供的ajax对象加载完毕时,通过代理脚本根据请求调用第二域名提供的ajax对象,并在第二域名返回的ajax对象中传递调用回调方法。

在一些实施例中,调用模块503,还包括:

缓存子模块55,用于当代理脚本对第二域名提供的ajax对象尚未加载完毕时,通过代理脚本将第一ajax方法中的请求和回调对象缓存至任务列表中;

调用子模块53,用于等待代理脚本对第二域名提供的ajax对象加载完毕时,通过代理脚本根据任务列表中缓存的请求调用第二域名提供的ajax对象,并在第二域名返回的ajax对象中传递调用回调方法。

在一些实施例中,该装置还包括:

重载模块504,用于通过代理脚本重载第一域名下的第二ajax方法;

判断模块505,用于通过重载后的第二ajax方法判断url参数中的主机名称是否与第一域名的主机名称相同;

确定模块506,用于当两个主机名称相同时,确定第一ajax方法中的url参数与第一域名同域;当两个主机名称不相同时,确定第一ajax方法中的url参数与第一域名不同域。

在一些实施例中,加载模块501,包括:

加载子模块51,用于通过代理脚本加载第二域名提供的代理网页文件,代理网页文件中包括隐藏的行内框架;

获取子模块52,用于通过代理脚本获取行内框架返回的第二域名提供的ajax对象。

在一些实施例中,第二域名和第一域名具有相同的目标主域名和不同的子域名,该装置还包括:

设置模块507,用于将代理脚本和代理网页文件的主域名均设置为目标主域名。

综上所述,本实施例提供的跨域请求处理装置,终端在访问第一域名提供的网页时,加载网页中由第二域名提供的代理脚本;通过代理脚本加载第二域名提供的代理网页文件中的ajax对象,并通过ajax对象判断是否为跨域请求;当需要跨域请求访问代理网页时,对第二域名提供的ajax对象进行访问。上述技术方案在不改变原有网页请求逻辑的情况下,加入上述跨域请求逻辑,既实现了基于ajax的跨域请求,又保证了异步处理请求的安全性,避免了csrf的风险。

另外,相关技术中,当程序设计的整体相当庞大时,跨域请求成本会比较高,上述技术方案降低了跨域请求的实现成本。

图6是本申请一个示例性实施例提供的电子设备600的结构框图。该终端600可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端600包括有:处理器601和存储器602。

处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的基于ajax的跨域请求处理方法。

在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。

外围设备接口603可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路604用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏605用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。

定位组件608用于定位终端600的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件608可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。

电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。

加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3d动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商logo时,指纹传感器614可以与物理按键或厂商logo集成在一起。

光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。

接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本申请还提供了一种服务器,该服务器包括处理器和存储器,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的基于ajax的跨域请求处理方法。需要说明的是,该服务器可以是如下图7所提供的服务器。

请参考图7,其示出了本申请一个示例性实施例提供的服务器的结构示意图。具体来讲:所述服务器700包括中央处理单元(cpu)701、包括随机存取存储器(ram)702和只读存储器(rom)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。

所述基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备707通过连接到系统总线705的大容量存储控制器连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者cd-roi驱动器之类的计算机可读介质。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。

存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元701执行,一个或多个程序包含用于实现上述基于ajax的跨域请求处理方法的指令,中央处理单元701执行该一个或多个程序实现上述各个方法实施例提供的基于ajax的跨域请求处理方法。

根据本发明的各种实施例,所述服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本发明实施例提供的基于ajax的跨域请求处理方法中由服务器所执行的步骤。

本申请还提供一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述方法实施例提供的基于ajax的跨域请求处理方法。

本申请还提供了一种计算机程序产品,当其在电子设备上运行时,使得电子设备执行上述各个方法实施例所述的基于ajax的跨域请求处理方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1