HTTP服务的处理方法及装置与流程

文档序号:11156470阅读:527来源:国知局
HTTP服务的处理方法及装置与制造工艺

本发明涉及电通信技术领域,尤其涉及一种HTTP服务的处理方法及装置。



背景技术:

现有的网络访问方法大多基于超文本传输协议(Hypertext Transfer Trotocol,简称HTTP)实现。客户端向服务器发起一个HTTP请求,请求获取某个数据资源。服务器对HTTP请求的内容进行解析,根据查询条件进行数据查询,并通过返回HTTP响应的方式将查询到的数据资源返回给客户端。

在向服务器发送HTTP请求时,通常需要在客户端侧对HTTP请求进行处理,例如对HTTP请求报文头部(header)中的请求方法进行改写,或者基于定制的业务需求向HTTP请求报文体部(body)中增加数据等。而在接收到服务器返回的HTTP响应后,也需要对HTTP响应进行处理,例如修改HTTP响应报文头部中的数据格式,或者对HTTP响应报文中状态行里的状态码进行修改等。现有技术中,客户端每发起一次HTTP请求或接收到一个HTTP响应时,都会通过特定线程对HTTP请求/响应进行一次处理。

在上述处理HTTP请求/响应的过程中,发明人发现,当HTTP请求或响应的数量较多时,对大量的HTTP请求/响应单独进行处理十分耗费客户端的处理资源。特别是在这些请求或响应都基于相同或相似的业务需求逻辑实现时,相同或相似的处理过程会产生大量的冗余操作,使得HTTP处理的效率十分低下。



技术实现要素:

本发明提供了一种HTTP服务的处理方法及装置,能够解决现有技术中处理HTTP请求/响应效率低下的问题。

为解决前述技术问题,一方面,本发明提供了一种HTTP服务的处理 方法,所述方法包括:

对前端发起的超文本传输协议HTTP请求进行拦截;

对拦截的HTTP请求进行统一批量处理;

将处理后的HTTP请求发送给服务器;

拦截所述服务器返回的HTTP响应;

对拦截的HTTP响应进行统一批量处理;

将处理后的HTTP响应发送给对应的前端。

另一方面,本发明还提供了一种HTTP服务的处理装置,所述装置包括:

第一拦截单元,用于对前端发起的超文本传输协议HTTP请求进行拦截;

第一处理单元,用于对拦截的HTTP请求进行统一批量处理;

第一发送单元,用于将处理后的HTTP请求发送给服务器;

第二拦截单元,用于拦截所述服务器返回的HTTP响应;

第二处理单元,用于对拦截的HTTP响应进行统一批量处理;

第二发送单元,用于将处理后的HTTP响应发送给对应的前端。

本发明提供的HTTP服务的处理方法及装置,能够对前端发送给服务器的HTTP请求,以及服务器返回给前端的HTTP响应分别进行拦截,并对拦截的HTTP请求/响应进行统一的批量处理。然后将处理后的HTTP请求发送给服务器,并将处理后的HTTP响应返回给前端。与现有技术相比,本发明能够对基于相同或相似业务逻辑的HTTP请求/响应进行批量处理,由此节省逐个处理HTTP请求/响应所产生的冗余操作,提升HTTP的处理效率。

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

附图说明

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

图1示出了本发明实施例提供的一种HTTP服务的处理方法流程图;

图2示出了本发明实施例提供的另一种HTTP服务的处理方法流程图;

图3示出了本发明实施例提供的一种HTTP服务的处理装置的组成框图。

具体实施方式

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

本发明实施例提供了一种HTTP服务的处理方法,如图1所示,该方法包括:

101、对前端发起的HTTP请求进行拦截。

本实施例的执行主体可以是手机、笔记本电脑、个人电脑、便携式智能设备等具有数据处理能力并能够通过外设进行人机交互的客户端。所述前端主要是指与用户直接进行交互的页面/界面。通常,一个应用进程至少具有一个页面,因此一个应用进程至少对应一个前端。

实际应用中,一个页面可以基于用户的查询操作发起HTTP请求,这种HTTP请求是用户可感知的。此外页面也可以在后台发起用户不可感知的HTTP请求,例如在浏览器渲染网页时,浏览器内核需要根据层叠样式表(Cascading Style Sheets,简称CSS)及超文本标记语言(Hyper Text Markup Language,简称HTML)源代码向服务器请求页面中显示的图片、文字等内容,这种HTTP请求通常不会与用户进行交互。

对于一个客户端而言,其涉及的前端数量一般为多个,而每一个前端又可以先后或同时发起多个HTTP请求,因此本实施例中客户端需要对多个HTTP请求进行处理,对应的,在步骤104中,客户端接收并需要处理的HTTP响应数量也是多个。

在本实施例中,当前端发起HTTP请求时,客户端并非对每一个HTTP请求分别进行处理,而是将HTTP请求进行拦截,然后对拦截下来的多个HTTP请求统一进行批量处理。

102、对拦截的HTTP请求进行统一批量处理。

本实施例中涉及的处理方式包括现有技术中的通用处理方式,例如修改HTTP请求报文头部的请求方法,也包括基于定制的业务需求逻辑而进行的处理,例如在HTTP请求报文的体部增加时间戳或者信息摘要算法5(Message-Digest Algorithm 5,简称MD5)值。本实施例不对客户端的具体处理方式进行限制。

现有技术中,每当前端发起一次HTTP请求时客户端就需要调用一次线程资源对该HTTP请求进行处理。而在本实施例中,客户端可以将待发送HTTP请求进行拦截,然后通过一个线程资源对多个HTTP请求批量进行处理。与现有技术相比,本实施例能够大大减少线程资源的调用次数,特别是对于在企业内网中基于特定业务需求逻辑进行HTTP请求处理的情况,由于HTTP请求数量较为庞大,并且HTTP请求的处理逻辑相同或较为相似,因此采用本实施例的方式进行HTTP请求可以节省大量的重复性处理过程(即冗余操作),从而大大减少进程资源的消耗。

进一步的,当不同的HTTP请求的处理逻辑不同时,客户端可以按照处理逻辑对HTTP请求进行分类,然后分别通过与处理逻辑数量相同个数的进程资源分别对不同类别的HTTP请求进行处理。由于实际应用中,处理逻辑的数量要远小于HTTP请求的数量,因此即使增加对线程资源的调用,本案相对现有技术而言耗费的线程资源也是极其有限的。

103、将处理后的HTTP请求发送给服务器。

在对多个HTTP请求进行批量处理后,客户端根据HTTP请求报文中记录的请求方法,以及服务器信息将HTTP请求发送给服务器。客户端可以将所有HTTP请求同时予以发送,也可以根据不同的发送规则对HTTP请求进行先后发送。在本实施例的一种实现方式中,所述发送规则可以但不限于是:1、按照前端发起HTTP请求的先后顺序发送;2、根据前端的优先级进行先后发送;3、根据业务对响应时延的要求高低进行先后发送。

本实施例中,作为HTTP请求接收方的服务器可以是一个,也可以是多个,本实施例并不限定于客户端仅将所有HTTP请求发送给一个服务器的情况。实际应用中,哪个HTTP请求发送给哪个服务器是由HTTP请求的内容(例如查询字符串)决定的。

104、拦截服务器返回的HTTP响应。

服务器在接收到客户端发送的HTTP请求后,对其进行解析,根据其中注明的请求方法,对其中查询字符串链接的数据内容进行查找,然后将查找到的数据内容添加到HTTP响应中返回给客户端。

105、对拦截的HTTP响应进行统一批量处理。

现有技术中,客户端在每接收到一个HTTP响应后就调用一次线程资源对该HTTP响应进行处理,然后将处理后的HTTP响应返回给对应的前端。而在本实施例中,服务器返回HTTP响应后,客户端先将HTTP响应予以拦截,然后调用一次线程资源,对拦截下来的多个HTTP响应统一进行批量处理,并返回给不同的前端。与前述步骤102类似的,客户端也可以调用几个线程资源,对不同业务逻辑类型的HTTP响应分别进行处理。

本实施例中,客户端可以对HTTP响应进行通用的处理,例如修改状态行中的状态码。也可以是基于定制的业务需求逻辑进行的定制化的处理,例如从HTTP响应报文体部解析服务器所添加的时间戳等标记。本实施例不对客户端的处理方式进行具体限定。

106、将处理后的HTTP响应发送给对应的前端。

在对HTTP响应处理完成之后,客户端根据HTTP响应携带的前端信息(例如前端名称或标记)将不同的HTTP响应返回给不同的前端,由此完成一次完整的HTTP请求流程。

本实施例提供的方法可以应用于客户端与服务器之间建立HTTP长连接的场景中,也可以应用于客户端与服务器之间建立HTTP短连接的场景中。

进一步的,作为对图1所示方法的细化,本发明实施例还提供了一种HTTP服务的处理方法,如图2所示,该方法包括:

201、当前端发起HTTP请求时,调用请求拦截Hook函数将原生请求 API挂起。

现有技术中,当前端发起HTTP请求时,客户端调用原生请求应用程序接口(Application Programming Interface,简称API)对HTTP请求进行单独处理,然后发送给服务器。而在本步骤中,客户端采用钩子Hook函数实现对HTTP请求的拦截。当前端发起HTTP请求时,客户端调用请求Hook函数将原生请求API挂起。然后执行步骤202,通过预设的请求处理API对HTTP请求进行统一批量处理。

202、调用预设的请求处理API对HTTP请求进行统一批量处理。

不同于系统自带的原生API,请求处理API需要由网络管理员编写。该请求处理API中写有处理HTTP请求的定制逻辑,该定制逻辑可以与现有技术中通用处理方式的处理逻辑一致,也可以是按照不同的业务需求自定义逻辑。较为典型的自定义逻辑可以是:在HTTP请求报文体部(当然也可以是头部)添加时间戳。

客户端按照请求处理API中的定制逻辑对多个HTTP请求进行统一批量处理。

在本实施例的一个应用场景中,定制逻辑可以是对HTTP请求报文的头部数据进行改写。基于现有的HTTP协议,HTTP请求的头部包括请求方法、统一资源定位符(Uniform Resource Locator,简称URL)以及HTTP协议版本三个部分。实际应用中,请求方法具体有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT等;URL中的查询字符串用于服务器查找前端所需的数据内容;HTTP协议版本目前较多使用的包括HTTP 0.9、HTTP 1.0和HTTP 1.1等版本。下面以一个示例对改写HTTP请求报文的头部信息进行说明。

在基于客户端本地屏蔽违规外联的场景中,某员登录淘宝网站进行网络购物。当员工在浏览器中打开淘宝网链接时,浏览器前端向服务器发起请求淘宝主页的HTTP请求,该HTTP请求报文的头部内容为“GET www.taobao.com HTTP 1.1”。根据网络管理员设置的处理逻辑,客户端在截获该HTTP请求后,将URL“www.taobao.com”改写为一个无效域名,由此获得处理后的头部内容为“GET www.xxxxxxx.com HTTP 1.1”。然后客户 端将该HTTP请求发送给网络侧服务器。由于HTTP请求中的URL是无效的,网络侧服务器无法返回任何有用的页面,因此可以实现对上网行为的屏蔽功能。当然,将URL改写为网管设置的、用于提示禁止登录外网的提示页面的URL也可以。

在本实施例的另一个应用场景中,定制逻辑还可以是对HTTP请求报文的体部数据进行增加、删除或改写。对HTTP请求报文体部数据的增删改操作需要基于预先协定好的私有协议执行,以使得修改后的数据能够符合HTTP请求报文体部的字段格式要求。下面以一个示例对在报文体部中增加数据进行说明。

在一些应用场景中,服务器需要获取客户端发起HTTP请求的时间信息。客户端在对前端发起的HTTP请求进行截获后,获取根据系统时钟记录的请求发起时间,然后调用请求处理API,按照该API中的定制逻辑,将该时间以时间戳的形式写入到HTTP请求报文体部的某个预先协定好的字段中,获得处理后的HTTP请求。

上述两个应用场景仅仅是以对一个HTTP请求处理进行的说明,实际应用中,本实施例中的客户端可以基础请求处理API对大量的HTTP请求进行诸如改写URL、添加时间戳等同一定制逻辑的批量处理。

需要说明的是,本实施例中所谓统一处理的含义是指,保证对不同HTTP请求的处理逻辑的一致性,而不仅仅是指处理结果的绝对相同。例如,在上述屏蔽违规外联的场景中,可以将所有HTTP请求的URL修改为同一个具体而特定的URL“例如www.xxxxxx.com”,这种处理逻辑使得每个HTTP请求中的URL均变为了同一个新的URL;而在上述添加时间戳的场景中,处理逻辑的一致性体现在“将产生HTTP请求的时间添加到HTTP请求中”,但是不同HTTP请求中添加的时间戳的具体数值是不一样的。

203、在对HTTP请求进行统一批量处理之后,将处理后的HTTP请求发送给服务器。

客户端可以通过请求处理API将处理后的HTTP请求发送给服务器,也可以调用原生请求API对请求处理API进行接管,通过原生请求API将处理后的HTTP请求发送给服务器。

204、当服务器返回HTTP响应时,调用响应拦截Hook函数将原生响应API挂起。

现有技术中,当服务器返回HTTP响应时,客户端调用原生响应API对HTTP响应进行单独处理,然后返回给前端。而在本步骤中,客户端采用钩子Hook函数实现对HTTP响应的拦截。当服务器返回HTTP响应时,客户端调用请求Hook函数将原生响应API挂起。然后执行步骤205,通过预设的响应处理API对HTTP响应进行统一批量处理。

205、调用预设的响应处理API对HTTP响应进行统一批量处理。

不同于系统自带的原生API,响应处理API需要由网络管理员编写。该响应处理API中写有处理HTTP响应的定制逻辑,该定制逻辑可以与现有技术中通用处理方式的处理逻辑一致,也可以是按照不同的业务需求自定义逻辑。较为典型的自定义逻辑可以是:改写HTTP响应中的状态码。

客户端按照响应处理API中的定制逻辑对多个HTTP响应进行统一批量处理。

在本实施例的一个应用场景中,处理HTTP响应的定制逻辑可以是对HTTP响应报文的头部数据进行改写,例如修改URL中的信息;或者可以是对HTTP响应报文的体部数据进行增删改处理,例如增加服务器分配的响应标识或时间戳。再或者还可以是对HTTP响应报文的状态行数据进行改写,例如在屏蔽违规外联的场景中,将状态码202修改为状态码404。

206、在对HTTP响应进行统一批量处理之后,将处理后的HTTP响应发送给对应的前端。

客户端可以通过响应处理API将处理后的HTTP响应发送给对应的前端,也可以调用原生响应API对响应处理API进行接管,通过原生响应API将处理后的HTTP响应发送给对应的前端。

进一步的,为避免因截获HTTP请求/响应,造成较长的HTTP服务时延,在本实施例的一种改进方案中,可以对作为截获的对象的前端或者截获的时间限制进行设置。对于设置截获前端而言,可以设置客户端仅对某个或某几个应用的前端涉及的HTTP请求/响应进行截获,而对其他应用前端涉及的HTTP请求/响应按照现有的实现方式进行处理。具体的,客户端 可以根据设置对第一选定前端发起的HTTP请求进行拦截和处理,并拦截处理服务器向第二选定前端返回的HTTP响应,其中,第一选定前端与第二选定前端在内容和数量上可以一致也可以不一致。由于缩小了截获HTTP的前端数量范围,因此可以降低等待发起HTTP请求或返回HTTP响应的概率,由此缩短HTTP的服务时延。

对于设置截获时间而言,客户端可以对预设时间段内的HTTP请求/响应进行截获处理,而当超出该时间段后发起或返回的HTTP请求/响应,则按照现有的处理方式处理。具体的,客户端可以根据设置对第一预定时段内前端发起的HTTP请求进行拦截处理,并拦截处理服务器在第二预定时段内返回的HTTP响应,其中,第一预定时段和第二预定时段的长短可以相同或不同。由于对等待HTTP请求/响应的时间进行了限制,因此可以防止因无限等待某个HTTP请求或HTTP响应而造成的时延增加。

此外,实际应用中,还可以对客户端一次性截获的HTTP请求或HTTP响应的数量进行设置,由此同样可以达到防止HTTP服务时延过长的效果。

进一步的,作为对图1及图2所示方法的实现,本发明实施例还提供了一种HTTP服务的处理装置,该装置可以位于客户端内部,也可以独立于客户端,作为客户端与服务器之间的媒介设备。需要说明的是,本装置实施例与前述方法实施例对应,能够实现前述方法实施例中的全部内容。为便于阅读,本装置实施例仅对前述方法实施例中的内容进行概要性描述,不对方法实施例中的细节内容进行逐一赘述。如图3所示,该装置包括:第一拦截单元31、第一处理单元32、第一发送单元33、第二拦截单元34、第二处理单元35以及第二发送单元36。其中,

第一拦截单元31,用于对前端发起的超文本传输协议HTTP请求进行拦截;

第一处理单元32,用于对拦截的HTTP请求进行统一批量处理;

第一发送单元33,用于将处理后的HTTP请求发送给服务器;

第二拦截单元34,用于拦截所述服务器返回的HTTP响应;

第二处理单元35,用于对拦截的HTTP响应进行统一批量处理;

第二发送单元36,用于将处理后的HTTP响应发送给对应的前端。

进一步的,所述第一拦截单元31,用于当前端发起HTTP请求时,调用请求拦截钩子Hook函数将原生请求应用程序接口API挂起;

所述第一处理单元32,用于调用预设的请求处理API对所述HTTP请求进行统一批量处理,所述请求处理API中写有处理HTTP请求的定制逻辑。

进一步的,所述第一处理单元32,用于按照所述请求处理API中的定制逻辑对所述HTTP请求进行统一批量处理,其中,所述统一批量处理包括下述至少一种处理方式:对HTTP请求报文的头部数据进行改写,以及对HTTP请求报文的体部数据进行增加、删除或改写。

进一步的,所述第二拦截单元34,用于当所述服务器返回HTTP响应时,调用响应拦截Hook函数将原生响应API挂起;

所述第二处理单元35,用于调用预设的响应处理API对所述HTTP响应进行统一批量处理,所述响应处理API中写有处理HTTP响应的定制逻辑。

进一步的,所述第二处理单元35,用于按照所述响应处理API中的定制逻辑对所述HTTP响应进行统一批量处理,其中,所述统一批量处理包括下述至少一种处理方式:对HTTP响应报文的头部数据进行改写,以及对HTTP响应报文的状态行数据进行改写。

进一步的,所述第一拦截单元31,用于:

对第一选定前端发起的HTTP请求进行拦截;

对第一预定时段内前端发起的HTTP请求进行拦截;

所述第二拦截单元34,用于:

拦截所述服务器向第二选定前端返回的HTTP响应;

拦截所述服务器在第二预定时段内返回的HTTP响应。

本实施例提供的HTTP服务的处理装置,能够对前端发送给服务器的HTTP请求,以及服务器返回给前端的HTTP响应分别进行拦截,并对拦截的HTTP请求/响应进行统一的批量处理。然后将处理后的HTTP请求发送给服务器,并将处理后的HTTP响应返回给前端。与现有技术相比,本实施例能够对基于相同或相似业务逻辑的HTTP请求/响应进行批量处理,由 此节省逐个处理HTTP请求/响应所产生的冗余操作,提升HTTP的处理效率。

所述HTTP服务的处理装置包括处理器和存储器,上述第一拦截单元31、第一处理单元32、第一发送单元33、第二拦截单元34、第二处理单元35以及第二发送单元36等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现对HTTP请求/响应进行拦截批量处理的目的。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:对前端发起的HTTP请求进行拦截;对拦截的HTTP请求进行统一批量处理;将处理后的HTTP请求发送给服务器;拦截服务器返回的HTTP响应;对拦截的HTTP响应进行统一批量处理;将处理后的HTTP响应发送给对应的前端。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产 生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之 内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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