基于Ajax请求的网络页面加载方法、装置及系统与流程

文档序号:20875495发布日期:2020-05-26 16:27阅读:150来源:国知局
基于Ajax请求的网络页面加载方法、装置及系统与流程

本发明涉及互联网技术领域,具体涉及一种基于ajax请求的网络页面加载方法、装置及系统。



背景技术:

ajax(asynchronousjavascriptandxml,异步javascript和xml),是指一种创建交互式网页应用的网页开发技术。通过ajax技术,能够在无需重新加载整个网页的情况下,快速更新部分网页内容。具体地,通过在后台与服务器进行少量数据交换,ajax可以使网页实现异步更新,因此,可以在不重新加载整个网页的情况下,对网页的局部进行更新。

但是,发明人在实现本发明的过程中发现,上述方式至少存在如下缺陷:ajax请求通常由网页视图控件(如wkwebview)进行触发,该控件在处理ajax请求时,会将请求的内容主体(即body体)清空,从而导致原生客户端无法获取到请求的body体,进而无法对wkwebview触发的ajax请求进行安全监控。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于ajax请求的网络页面加载方法、装置及系统。

根据本发明的一个方面,提供了一种基于ajax请求的网络页面加载方法,包括:

向网页视图控件中注入用于拦截页面加载函数的hook代码,当检测到由所述页面加载函数触发的ajax请求时,通过所述hook代码拦截所述ajax请求;

将拦截到的ajax请求转发给原生客户端,以供所述原生客户端向服务端获取与所述ajax请求相对应的响应内容;

接收所述原生客户端获取到的与所述ajax请求相对应的响应内容,将所述响应内容发送给所述网页视图控件中的页面加载函数,以供所述页面加载函数根据所述响应内容加载网络页面。

可选地,所述将拦截到的ajax请求转发给原生客户端包括:通过预设的桥接代码,将拦截到的ajax请求转发给原生客户端;并且,

所述接收所述原生客户端获取到的与所述ajax请求相对应的响应内容包括:通过所述桥接代码,接收所述原生客户端获取到的与所述ajax请求相对应的响应内容。

可选地,所述hook代码为js代码,则所述通过所述桥接代码,接收所述原生客户端获取到的与所述ajax请求相对应的响应内容包括:

根据所述js代码的格式规范,针对所述原生客户端获取到的与所述ajax请求相对应的响应内容进行封装处理。

可选地,所述网页视图控件为wkwebview控件,所述原生客户端为ios原生客户端。

可选地,所述将拦截到的ajax请求转发给原生客户端之后,进一步包括:

所述原生客户端将所述ajax请求发送给网关设备;

通过网关设备获取所述拦截到的ajax请求中包含的内容主体,当判断出所述内容主体符合安全规范时,由所述网关设备将所述ajax请求发送给服务端,以供服务端返回与所述ajax请求相对应的响应内容。

根据本发明的又一个方面,提供了一种基于ajax请求的网络页面加载装置,包括:

注入模块,适于向网页视图控件中注入用于拦截页面加载函数的hook代码,当检测到由所述页面加载函数触发的ajax请求时,通过所述hook代码拦截所述ajax请求;

转发模块,适于将拦截到的ajax请求转发给原生客户端,以供所述原生客户端向服务端获取与所述ajax请求相对应的响应内容;

加载模块,适于接收所述原生客户端获取到的与所述ajax请求相对应的响应内容,将所述响应内容发送给所述网页视图控件中的页面加载函数,以供所述页面加载函数根据所述响应内容加载网络页面。

可选地,所述转发模块具体适于:通过预设的桥接代码,将拦截到的ajax请求转发给原生客户端;并且,

所述加载模块具体适于:通过所述桥接代码,接收所述原生客户端获取到的与所述ajax请求相对应的响应内容。

根据本发明的又一个方面,提供了一种基于ajax请求的网络页面加载系统,包括:上述的基于ajax请求的网络页面加载装置、网关设备、以及服务端。

根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述基于ajax请求的网络页面加载方法对应的操作。

根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述基于ajax请求的网络页面加载方法对应的操作。

在本发明所提供的基于ajax请求的网络页面加载方法、装置及系统中,预先向网页视图控件中注入用于拦截页面加载函数的hook代码,以便通过hook代码拦截ajax请求,并将拦截到的ajax请求转发给原生客户端,以接收原生客户端获取到的与ajax请求相对应的响应内容,从而根据响应内容加载网络页面。由此可见,在该方式中,通过hook代码能够拦截ajax请求的完整内容,从而便于原生客户端获取到ajax请求中的完整body体,进而针对ajax请求实现安全监控,以便提升用户浏览网页的安全性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的基于ajax请求的网络页面加载方法的流程示意图;

图2示出了本发明提供的技术方案的系统原理图;

图3示出了根据本发明又一个实施例的基于ajax请求的网络页面加载装置的结构示意图;

图4示出了根据本发明的一种电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的基于ajax请求的网络页面加载方法的流程示意图,如图1所示,该方法包括:

步骤s110:向网页视图控件中注入用于拦截页面加载函数的hook代码,当检测到由所述页面加载函数触发的ajax请求时,通过所述hook代码拦截所述ajax请求。

其中,该网页视图控件可以为wkwebview控件,该wkwebview用于展示一个web页面,所使用的内核是webkit引擎。具体地,向网页视图控件中注入用于拦截页面加载函数的hook代码。该hook代码可以为jshook代码,具体用于hookjs的ajax网络请求,并且能够跟原生wkwebview通信,把拦截到的请求通过js和原生的交互转发给原生客户端。

由此可见,通过hook代码能够实时监测页面加载函数触发的ajax请求,并在页面加载函数触发ajax请求时,通过hook代码拦截该ajax请求。

步骤s120:将拦截到的ajax请求转发给原生客户端,以供原生客户端向服务端获取与ajax请求相对应的响应内容。

具体地,可以通过预设的桥接代码,将拦截到的ajax请求转发给原生客户端。该预设的桥接代码可以为jsbridge代码。其中,jsbridge代码用于调用原生客户端。并且,jsbridge代码能够作为原生和非原生(如h5页面)之间的桥梁,以构建原生和非原生间用于实现消息通信的双向通道。该桥接代码可以是hook代码的一部分,也可以是独立于hook代码的其他代码段,本发明对此不作限定。

另外,当原生客户端接收到拦截到的ajax请求后,向服务端获取与该ajax请求相对应的响应内容。该原生客户端可以为ios原生客户端。具体地,原生客户端将ajax请求发送给网关设备;通过网关设备获取拦截到的ajax请求中包含的内容主体(body体),当判断出内容主体符合安全规范时,由网关设备将该ajax请求发送给服务端,以供服务端返回与ajax请求相对应的响应内容。由此可见,在该方式中,由于原生客户端能够获取到ajax请求中包含的body体,因此,安全网关设备也能够获取到该body体,进而根据body体的内容判断该ajax请求是否合法(符合安全规范),并仅在符合安全规范时将其转发给服务端进行处理。当然,网关设备也可以在内容主体不符合安全规范时仍然将其转发给服务端进行处理,以便实时监控对应的网页客户端的网络行为,从而实现安全监控的目的,本发明对网关设备的具体处理细节不作限定。总之,通过该方式,网关设备能够获取到ajax请求中包含的body体,从而实现安全监控的目的。

步骤s130:接收原生客户端获取到的与该ajax请求相对应的响应内容,将响应内容发送给网页视图控件中的页面加载函数,以供页面加载函数根据响应内容加载网络页面。

具体地,通过上述桥接代码,接收原生客户端获取到的与ajax请求相对应的响应内容。另外,在该步骤中,进一步根据js代码的格式规范,针对原生客户端获取到的与ajax请求相对应的响应内容进行封装处理,以使该响应内容符合js格式规范。

由此可见,在本发明所提供的基于ajax请求的网络页面加载方法中,预先向网页视图控件中注入用于拦截页面加载函数的hook代码,以便通过hook代码拦截ajax请求,并将拦截到的ajax请求转发给原生客户端,以接收原生客户端获取到的与ajax请求相对应的响应内容,从而根据响应内容加载网络页面。由此可见,在该方式中,通过hook代码能够拦截ajax请求的完整内容,从而便于原生客户端获取到ajax请求中的完整body体,进而针对ajax请求实现安全监控,以便提升用户浏览网页的安全性。

为了便于理解,下面以一个具体示例为例详细描述本发明实施例中的实现方式:

发明人在实现本发明的过程中发现:在传统方式中,ioswkwebview加载网页的时候无法拦截到前端的ajax的post请求的请求body体。具体原因在于:由于wkwebview的引擎webkit是一个独立的进程,所以在进行ajax请求的时候都是由webkit进程在处理,然后再通过ipc进程之间的通信传递给原生app(即原生客户端)。由于webkit在处理post请求给原生客户端的时候,针对post的body体中的内容执行了清空处理,由此导致ios原生客户端无法获取到post请求body体的内容,进而不利于实现网页安全监控。

为了解决上述问题,在本示例中,ioswkwebview加载网页的时候通过js和原生(为描述简便,以下将原生客户端简称为原生)的交互通信运用wkwebview加载前可以植入js代码的技术,hook前端的ajax请求转发到ios原生中,让原生去发送网络请求。该方案在ioswkwebview加载网页之前默认植入hook前端js的ajax的网络请求,并通过wkwebview和js的通信让前端要发送的请求转发到ios原生中,让ios客户端通过nsurlsession拼接一个完整的网络请求,然后通过原生返回网络请求的响应结果,拼接成一个ajax的响应内容。通过wkwebview和js的通信转发给之前植入到js的函数代码(即hook代码)中,由植入的代码将响应结果分发给js的响应体,由此针对响应结果进行渲染操作,从而实现页面加载过程。

具体地,该方式通过以下步骤实现:

首先,构建要植入到js中的jshook代码,该代码包含三个部分,一个是hookjs的ajax网络请求,一个是跟原生wkwebview通信,把拦截到的请求通过js和原生的交互转发给原生客户端。

然后,hook原生wkwebview的初始化方法,内置上面写好的jshook代码,并通过配置跟js的通信方法来接收从前端发过来的请求内容。

最后,把原生请求到的内容包装成js要的格式通过js和wkwebview的通信转发给js内置的hook代码中,再分发给原始的请求中去渲染页面。

具体地,针对其中涉及到的几个模块的功能加以详细说明:

(1)ios原生:在加载wkwebview的时候通过hook机制拦截其中的加载函数(即页面加载函数),在该函数中,通过配置wkwebview的wkuserscript进行注入本地的js代码文件。另外,还需要构建js跟ios通信的桥接代码,且承担发送请求的任务。

(2)wkwebview:加载html页面,执行相关js的代码。通过注入的桥接代码,发送jshook拦截到的ajax请求代码到ios原生。

(3)js:主要为注入的jshook代码,当html里面的js代码执行ajax请求时,jshook代码拦截到相关的请求内容,并通过桥接代码发送该请求内容到ios原生,由ios原生执行对应的处理过程。

图2示出了本发明提供的上述方案的系统原理图。如图2所示,webview即为上文提到的wkwebview,用于加载html页面,具体地,通过webkit引擎执行加载渲染操作,以使界面渲染完成。其中,当页面需要重新加载时,webview中的页面加载函数触发ajax请求,如图中虚线部分所示。常规情况下,该ajax请求将直接到达服务端,但是,在本发明中,由于预先注入了hook代码,因此,该hook代码拦截该ajax请求,重新组装请求数据,并通过桥接代码(即原生jsbridge),将ajax请求发送给原生客户端(即原生app)。由原生客户端将完整的ajax请求通过网关设备发送给服务端。相应的,当原生客户端接收到服务端通过网关设备返回的响应内容后,通过回调方式,重新组装请求数据,并通过桥接代码(即原生jsbridge),回调给ajax,从而由webview根据响应内容进行页面的重新渲染操作。

由此可见,在传统方式中,由于ios平台wkwebview底层会把网页的每次ajax的post请求的body体清空,导致安全网关拦截不到完整的请求。通过本发明中的方案,能够把每次ajax的请求的完整内容转发到ios原生客户端,以便由ios原生客户端向网络侧发起请求。

综上可知,该方式能够获取到前端的所有ajax请求的域名body体和header头里的内容,由此保证wkwebview的网络请求都是可控的。该方式至少具有如下优势:能够解决运行在安全网关项目上所有的html的ajax的请求丢失body体的问题,从而控制发出的所有ajax请求。该方式在ioswkwebview加载网页的时候能够拦截到前端的ajax的post请求的请求body体,从而控制ios客户端应用wkwebview的过程中触发的所有ajax请求,从而有效控制用户浏览网页的安全性。本发明中的方式能够应用于安全网关设备中,以使安全网关作为沙箱运行,从而监控用户浏览网页中的各项行为。

图3示出了根据本发明又一个实施例的基于ajax请求的网络页面加载装置的结构示意图,如图3所示,该系统包括:

注入模块31,适于向网页视图控件中注入用于拦截页面加载函数的hook代码,当检测到由所述页面加载函数触发的ajax请求时,通过所述hook代码拦截所述ajax请求;

转发模块32,适于将拦截到的ajax请求转发给原生客户端,以供所述原生客户端向服务端获取与所述ajax请求相对应的响应内容;

加载模块33,适于接收所述原生客户端获取到的与所述ajax请求相对应的响应内容,将所述响应内容发送给所述网页视图控件中的页面加载函数,以供所述页面加载函数根据所述响应内容加载网络页面。

可选地,所述转发模块具体适于:通过预设的桥接代码,将拦截到的ajax请求转发给原生客户端;并且,

所述加载模块具体适于:通过所述桥接代码,接收所述原生客户端获取到的与所述ajax请求相对应的响应内容。

上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。

本发明实施例还提供了一种基于ajax请求的网络页面加载系统,包括:上述的基于ajax请求的网络页面加载装置、网关设备、以及服务端。

本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于ajax请求的网络页面加载方法。

图4示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(communicationsinterface)404、存储器(memory)406、以及通信总线408。

其中:

处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。

通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。

处理器402,用于执行程序410,具体可以执行上述域名解析方法实施例中的相关步骤。

具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。

处理器402可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。

存储器406,用于存放程序410。存储器406可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

程序410具体可以用于使得处理器402执行上述方法实施例中的各项操作。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的电子设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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