处理http请求的方法及装置的制造方法

xiaoxiao2021-2-23  147

处理http请求的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及计算机领域,具体而言,涉及一种处理HTTP请求的方法及装置。
【背景技术】
[000引 目前,在很多应用场景经常需要用到"白名单",其中,"白名单"与"黑名单"相对 应。例如,若在电脑系统中设置并启用了黑名单,则被列入到黑名单的用户(或IP地址、IP 包、邮件、病毒等)将不能通过校验。类似地,如果在电脑系统中设置并启用了白名单,则在 白名单中的用户(或IP地址、IP包、邮件等)可W通过校验,甚至可W优先通过校验,而不 会被当成非法用户(或非法IP地址、非法IP包、垃圾邮件、病毒等)无法通过校验,送样安 全性和快捷性都大大提高。
[0003] 在传统技术中,对"白名单"的匹配主要采用遍历全部数组的方式进行查找匹配, 送样如果"白名单"数目较多,则在查找过程中则需要花费大量的时间,从而大大降低了操 作效率,而且由于一些应用需要的"白名单"模式不同,采用上述方式的通用性也较低。
[0004] W对HTTP请求的校验为例,预先设置的"白名单"W数组的形式存储,其中,数组 如下表所示:
[0005]
[0006] 若HTTP请求中的访问路径为:www. ABC. com,则需要依次将HTTP请求中的访问路 径与上述每个数组成员中所记录的被允许访问的路径进行匹配。例如,按照字符的顺序,依 次比较"WWW. ABC. com"和数组成员1中记录的被允许访问的路径"WWW. AB. com";在发现两 者不匹配时,则重新按照字符的顺序,依次比较"WWW. ABC. com"和数组成员2中记录的被允 许访问的路径"WWW. AC. com", W此类推,直到遍历完所有的数组成员。
[0007] 然而,在上述匹配的过程,若发现HTTP请求中的访问路径与一个数组成员中记录 的被允许访问的路径不匹配,则需要从另一个数组成员中记录的被允许访问的路径中的第 一个字符开始再次判断是否与HTTP请求中的访问路径,送样导致了在处理HTTP请求时对 HTTP请求进行校验的效率较低。
[000引针对上述的问题,目前尚未提出有效的解决方案。

【发明内容】

[0009] 本发明实施例提供了一种处理HTTP请求的方法及装置,W至少解决现有技术中 在处理HTTP请求时对HTTP请求进行校验的效率较低的技术问题。
[0010] 根据本发明实施例的一个方面,提供了一种处理HTTP请求的方法,包括;接收客 户端发送的HTTP请求;从HTTP请求中获取由字符串表示的访问路径;在预先建立的具有 树状结构的路径节点集合中查找与访问路径匹配的目标路径,其中,路径节点集合中从根 节点到每个叶子节点的路径节点子集合表示一条被允许访问的路径,不同的路径中相同的 连续字符串由一个路径节点子集合中包括根节点在内的多个相连的路径节点表示;若在路 径节点集合中查找到与访问路径匹配的目标路径,则使用与上述目标路径对应的校验条件 对上述HTTP请求进行校验;若上述HTTP请求满足上述校验条件,则执行HTTP请求所指示 的请求操作。
[0011] 根据本发明实施例的另一方面,还提供了一种处理HTTP请求的装置,包括:接收 单元,用于接收客户端发送的HTTP请求;获取单元,用于从HTTP请求中获取由字符串表示 的访问路径;查找单元,用于在预先建立的具有树状结构的路径节点集合中查找与访问路 径匹配的目标路径,其中,路径节点集合中从根节点到每个叶子节点的路径节点子集合表 示一条被允许访问的路径,不同的路径中相同的连续字符串由一个路径节点子集合中包括 根节点在内的多个相连的路径节点表示;校验单元,用于在路径节点集合中查找到与访问 路径匹配的目标路径时,使用与目标路径对应的校验条件对HTTP请求进行校验;执行单 元,用于在HTTP请求满足校验条件时,执行HTTP请求所指示的请求操作。
[0012] 在本发明实施例中,采用树状结构来表示白名单中被允许访问的路径,且对于不 同的路径中相同的连续字符串,仅由相同的路径节点表示一次,而不需要如现有技术中所 采用的分别通过不同的数组成员进行表示。送样,在查找的过程中不需要遍历每一条根节 点到叶子节点所表示的路径,即可W判断出HTTP请求的访问路径是否为白名单中被允许 访问的路径,从而提高了在处理HTTP请求时对HTTP请求进行校验的效率,进而解决了在处 理HTTP请求时对HTTP请求进行校验的效率较低的技术问题。
【附图说明】
[0013] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0014] 图1是根据本发明实施例的一种可选的网络环境的示意图;
[0015] 图2是根据本发明实施例的一种可选的处理HTTP请求的方法的流程图;
[0016] 图3是根据本发明实施例的一种可选的具有树状结构的路径节点集合的示意图;
[0017] 图4是根据本发明实施例的另一种可选的具有树状结构的路径节点集合的示意 图;
[0018] 图5是根据本发明实施例的一种可选的在建立具有树状结构的路径节点集合的 过程中的路径节点集合的示意图;
[0019] 图6是根据本发明实施例的另一种可选的在建立具有树状结构的路径节点集合 的过程中的路径节点集合的示意图;
[0020] 图7是根据本发明实施例的又一种可选的在建立具有树状结构的路径节点集合 的过程中的路径节点集合的示意图;
[0021] 图8是根据本发明实施例的一种可选的处理HTTP请求的装置的结构框图;
[0022] 图9是根据本发明实施例的另一种可选的处理HTTP请求的装置的结构框图;
[0023] 图10是根据本发明实施例的又一种可选的处理HTTP请求的装置的结构框图;
[0024] 图11是根据本发明实施例的又一种可选的处理HTTP请求的装置的结构框图;
[00巧]图12是根据本发明实施例的又一种可选的处理HTTP请求的装置的结构框图。
【具体实施方式】
[0026] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是 本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范 围。
[0027] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语"第一"、"第 二"等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解送样使用 的数据在适当情况下可W互换,W便送里描述的本发明的实施例能够W除了在送里图示或 描述的郝些W外的顺序实施。此外,术语"包括"和"具有"W及他们的任何变形,意图在于 覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限 于清楚地列出的郝些步骤或单元,而是可包括没有清楚地列出的或对于送些过程、方法、产 品或设备固有的其它步骤或单元。
[0028] 实施例1
[0029] 在附图的流程图示出的步骤可W在诸如一组计算机可执行指令的计算机系统中 执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可W W不同于此处的顺 序执行所示出或描述的步骤。
[0030] 可选地,在本实施例中,上述处理HTTP请求的方法可W但不限于应用于如图1所 示的网络环境中,其中,发送HTTP请求的客户端可W但不限于位于图1所示的终端102中, 图1所示的服务器104将通过网络接收上述HTTP请求,其中,上述服务器104也可W用终 端替换。可选地,在本实施例中,上述网络可W包括但不限于;广域网、城域网、局域网。上 述服务器104将从上述HTTP请求中获取由字符串表示的访问路径,并查找与上述访问路径 匹配的目标路径,并在查找到上述目标路径后,执行上述HTTP请求所指示的请求操作。可 选地,在本实施例中,上述终端可W包括但不限于:手机、平板电脑、笔记本电脑、PC机。
[0031] 可选地,在本实施例中,上述处理HTTP请求的方法的流程图可W如图2所示,该方 法包括:
[0032] S202,接收客户端发送的HTTP请求;可选地,上述HTTP请求可W为服务器104接 收到的终端102上安装的客户端发送的用于访问网页的HTTP请求。可选地,上述HTTP请求 中可W但不限于包括:访问路径,例如,上述访问路径可W但不限于为上述网页的网址,如, "Host:o. mCGI :/t",或者为,"Host:m. 0. m"。
[0033] 上述HTTP请求中包括的访问路径可W包括化St字段和/或CGI (公共网关接口, Common Gateway Inte计ace)字段,其中,上述化st可W但不限于在互联网协议中,表示能 够同其他机器互相访问的本地计算机。例如,一台本地机有唯一标志代码,同网络掩码一起 组成IP地址,如果通过点到点协议通过ISP访问互联网,郝么在连接期间将会拥有唯一的 IP地址,在送种情况下,化St表示一个网络节点。上述CGI在物理上是运行在服务器上的 一段程序,用于提供同客户端HTML页面的接口。
[0034] S204,从HTTP请求中获取由字符串表示的访问路径;
[0035] S206,在预先建立的具有树状结构的路径节点集合中查找与访问路径匹配的目标 路径,其中,路径节点集合中从根节点到每个叶子节点的路径节点子集合表示一条被允许 访问的路径,不同的路径中相同的连续字符串由一个路径节点子集合中包括根节点在内的 多个相连的路径节点表示;
[0036] 可选地,图3示出了预先建立的具有树状结构的路径节点集合的一种示意图,需 要说明的是,图3所示的路径节点集合仅为一种示例,本实施例中的路径节点集合可W根 据不同的场景进行配置,如图4所示。
[0037] 如图3所示,具有树状结构的路径节点集合可W用于表示4条被允许访问的路 径:
[0038] l)Host:o. m CGI :/t ;
[0039] 2)Host:m. o.m CGI:null (即,CGI 为空);
[0040] 3)Host:o. n CGI: /m ;
[0041] 4)Host:o. n CGI: /n ;
[004引具体地,如图3所示,根节点"H,root"到叶子节点"D,P,t"的路径节点子集 合1表示上述路径1)。目P,路径节点子集合1中的路径节点"H,root ","H,S,册ST ", "0, S,m","0, S,. 'V'D,S,0'V'D,P,CGI","0, P,/ 'V'D,P,t"表示上述路径 1) "Host :0. m CGI:/t";
[004引根节点"H,root"到叶子节点"D,S,m"的路径节点子集合2表示上述路径。。即, 路径节点子集合 2 中的路径节点"H,root", "H,S,册ST","D,S,m","0, S,. ","0, S,0", "D,S,.,V'D,S, m"表示上述路径。"Host: m. o.m CGI: null";
[0044] 根节点"H,root"到叶子节点"D,P,m"的路径节点子集合3表示上述路径扣。即, 路径节点子集合 3 中的路径节点"H,root", "H,S,册ST","D,S,η","0, S,. ","0, S,0", 。0,口,061",。0,口,/",。0,口,111"表示上述路径:3)。化31:〇.11061:/111";
[004引根节点"Η,root"到叶子节点"D,Ρ,η"的路径节点子集合4表示上述路径4)。即, 路径节点子集合 4 中的路径节点"Η,root", "Η,S,册ST","D,S,η","0, S,. ","0, S ,0", 。0,口,〔61","0,口,/","0,口,11"表示上述路径4)。化31:0.11〔61:/11"。
[004引其中,上述路径1)和。共用了路径节点''H,root,V'H,S,WST,,, "化S,m","化S,.化S,0"。也就是说,上述路径1)和。中相同的连续字符串"化st:o. m"由上述路径节点"H,root", "H,S,册ST","0, S,m","0, S,. ","0, S,0"表示。
[0047] 类似地,上述路径如和4)共用了路径节点''H,root,V'H,S,WST,,, "0, S,η", "0, S,. ","D,S,〇","0, P,CGI","D,P,/"。也就是说,上述路径 3)和 4)中相同的 连续字符串"H〇st:o. η CGI:/',由上述路径节点"H,root'V'H,S,册ST'V'D,S,n',,"0, S,. ',, "D,S,0","D,P,CGI", "D,P,/"表示。
[004引在图3中,路径1)-4)中的册ST字段中的字符(例如,路径1)中的"o.m")按照 "从后缀到前缀"的顺序通过路径节点来表示。W路径1为例,册ST字段中的字符为"0. m", 其中,"m"为后缀,"η"为前缀,上述"从后缀到前缀"的顺序指的是:路径节点"化S,m"为 路径节点"H,S,册ST"的子节点,路径节点"D,S,."为路径节点"D,S,m"的子节点,"0, S,0" 为路径节点"化S,. ',的子节点。换句话说,"Η, S,册ST',,"化S,m","化S,. "化S,ο"依次 连接。
[0049] 需要说明的是,上述按照"从后缀到前缀"的顺序通过路径节点来表示路径1)-4) 中的册ST字段中的字符仅是一种示例,本实施例不仅限于此,例如,还可W按照"从前缀到 后缀"或"从前缀开始"的顺序通过路径节点来表示路径1) -4)中的册ST字段中的字符,其 中,"从前缀开始"的顺序适用于册ST字段仅包括前缀、而不包括后缀的场景。W路径1为 例,册ST字段中的字符为"〇. m",其中,"m"为后缀,"η"为前缀,上述"从前缀到后缀"的顺 序指的是:路径节点"D,S,0"为路径节点"Η,S,册ST"的子节点,路径节点"D,S,."为路径 节点"化S,0"的子节点,"化S,m"为路径节点"化S,的子节点。
[0050] 可选地,在预先建立的具有树状结构的路径节点集合中查找与访问路径匹配的 目标路径的过程中,可W从根节点开始比较访问路径中的字符与路径节点中的字符是否 相同。由于路径节点集合具有树状结构,因此,在将访问路径中的字符与具有多个子节点 (例如,子节点1 "化P,CGI",子节点2 "化S,.")的路径节点(节点"D,S,o")进行比对 之后,可W选择上述一个子节点(例如,子节点1 "化P,CGI")所在的分支(例如,子节点 1 "化P,CGI"到叶子节点"D,P,t")继续与访问路径中剩余的字符继续比对。若该分支比对 结果失败(例如,访问路径为"化St 对应于图3中的路径2)),送转到路径节点(节 点"D,S,〇")的其他子节点(例如,子节点2 "D,8,所在的分支进行比对,而不需要重新 再比对路径节点(节点"D,S,o")之前已经比对过的节点(例如,"H,root","H,S,册ST", "化S,m","化S,."化S,0"),从而减少了比对的次数,即,提高了在处理HTTP请求时对 HTTP请求进行校验的效率。
[0051] 也就是说,不同的路径中相同的连续字符串在比对的过程中最多仅需要比对一 次,即,判断出具有树状结构的路径节点集合中是否存在与访问路径匹配的目标路径。
[0052] S208,若在路径节点集合中查找到与访问路径匹配的目标路径,则使用与上述目 标路径对应的校验条件对上述HTTP请求进行校验;
[0053] 可选地,上述路径与校验条件之间的对应关系可W预先W映射表的方式存储在服 务器上。W上述路径1)-4)为例,映射表可W如下所示:
[0054]
[00巧]上述映射表存储在服务器上,仅是^种示例,上述映射表还可W存储在其他设备 中,上述服务器通过网络从其他设备中可W获取到上述映射表,本实施例对此不作限定。
[0056] S210,若上述HTTP请求满足上述校验条件,执行HTTP请求所指示的请求操作。
[0057] 可选地,在本实施例中,上述预先建立的具有树状结构的路径节点集合可W用来 表示"白名单"中记录的被允许访问的路径,例如,"白名单"中记录的每条被允许访问的路 径可W由从根节点到一个叶子节点的路径节点子集合表示。换句话说,"白名单"中记录的 被允许访问的路径通过树状结构来表示。可选地,在上述S208中,若在路径节点集合中查 找到与访问路径匹配的目标路径,则表示HTTP请求中的访问路径为"白名单"中记录的被 允许访问的路径。
[0058] 在本发明实施例中,采用树状结构来表示白名单中被允许访问的路径,且对于不 同的路径中相同的连续字符串,仅由相同的路径节点表示一次,而不需要如现有技术中所 采用的分别通过不同的数组成员进行表示。送样,在查找的过程中不需要遍历每一条根节 点到叶子节点所表示的路径,即可W判断出HTTP请求的访问路径是否为白名单中被允许 访问的路径,从而提高了在处理HTTP请求时对HTTP请求进行校验的效率,进而解决了在处 理HTTP请求时对HTTP请求进行校验的效率较低的技术问题。
[0059] 作为一种可选的方案,在使用与所述目标路径对应的校验条件对所述HTTP请求 进行校验之后,上述处理HTTP请求的方法还包括;若上述HTTP请求不满足上述校验条件, 则向客户端发送用于指示拒绝访问的响应消息。
[0060] 可选地,在本实施例中,在接收客户端发送的HTTP请求之前,需要预先建立上述 具有树状结构的路径节点集合。W下结合具体的示例和附图来描述建立上述具有树状结构 的路径节点集合的方案。需要说明的是,W下方案仅是一种示例,本实施例中建立上述具有 树状结构的路径节点集合的方案不仅限于此。
[0061] 可选地,在本实施例中,在接收客户端发送的HTTP请求之前,上述处理HTTP请求 的方法还包括:
[0062] S1,设置根节点,如图3中的根节点"H,root";
[006引 S2,设置根节点的子节点(例如,"H,S,册ST"),其中,每个子节点中包含的字符表 示一个被允许访问的路径中的册ST字段,不同的被允许访问的路径中的相同的册ST字段 由一个子节点中包含的字符表示;
[0064] S3,在每个子节点下设置多个路径节点直到叶子节点,其中,不同的被允许访问的 路径中相同的连续字符串由多个路径节点中的多个相连的路径节点表示。
[0065] W被允许访问的路径包括图3中的4条路径为例,图5-图7示出了具有树状结构 的路径节点集合的建立过程。
[0066] 如图5所示,路径节点集合初始化为空,在此基础上,先在路径节点集合中 形成路径1) "Host: 0. m CGI: /t"的树状结构,即,路径节点"H,root", "H,S,册ST", "0, S,m","0, S,. ',,"0, S,〇',,"0, P,CGI',,"0, P,/',,"0, P,t"依次连接。
[0067] 进一步,在图5的基础上,再在路径节点集合中形成路径2)"化st:m.o.m CGI:null"。由于路径1)和2)具有相同的连续字符串"化st:o.m",因此,仅需要在图5的 基础上,将路径节点"D,S,设置为路径节点"D,S,0"的子节点,再将路径节点"D,S,m"设 置为路径节点"D,S,的子节点,如图6所示。在图6中,上述路径1)和2)共用了路径节 点"H, root,V'H, S,册ST,V'D, S, m","D, S,.,V'D, S, 0"。
[0068] W相同的方式,在图6的基础上,再在路径节点集合中形成路径3)"化st:o. η CGI:/m"。由于路径3)中的册ST字段中的字符"η"与路径1)和路径2)中的册ST字段 中的字符"m"不同,因此,将路径节点"化S,η"作为路径节点"H,S,册ST"的一个新的子节 点,并在路径节点"化S,η"之后依次连接路径节点"化S,."化S,0","化P,CGI","化P,/", "D, P, m",图 7 所示。
[0069] 进一步,在图7的基础上,再在路径节点集合中形成路径4)"化st:o. nCGI :/n"。 由于上述路径3)和4)具有相同的连续字符串"化st:o. η CGI:/",因此,仅需要在图7的 基础上,将路径节点"化P,η"设置为路径节点"化P,/"的子节点,如图3所示。在图3中, 上述路径扣和 4)共用了路径节点"Η,root", "Η,S,册ST","D,S,η","D,S,. ","D,S,0", "D,P,CGI","D,P,/"。
[0070] 可选地,在树状结构中,若一个路径节点存在多个子节点,则可W按照子节点中包 括的字符的顺序来设置上述子节点的遍历顺序(或称排列顺序)。例如,由于字符"m"位于 字符"η"之前,因此,可W将路径节点"D,S,m"作为路径节点"H,S,册ST"的子节点排列在 路径节点"化S,η"的左侧,送样,在具有树状结构的路径节点集合中执行查找操作时,优先 遍历路径节点"化S,m",然后再遍历路径节点"化S,η"。
[0071] 需要说明的是,上述按照子节点中包括的字符的顺序来设置上述子节点的排列顺 序,送仅是一种示例,本实施例对此不作限定。
[0072] 可选地,在本实施例中,上述每一个路径节点中可W包括但不限于W下至少之一: 节点类型、匹配模式、节点字符,其中,上述节点类型可W包括但不限于:根节点、子节点、叶 子节点,上述叶子节点指一条路径的最后一个路径节点。上述匹配模式可W包括但不限于 W下至少之一;前缀匹配、后缀匹配。其中,上述前缀匹配指的是;从前往后依次读取HTTP 请求中访问路径中的字符;上述后缀匹配指的是:从后往前依次读取HTTP请求中访问路径 中的字符。
[0073] 可选地,可W但不限于通过W下函数来设置每个路径节点。
[0074]
[00 巧]
[0076] 结合上述描述W及图3中所示的路径节点可知,一个路径节点可W用3元素 <QnodeType, MatchMethod, value〉来表不,其中,QnodeType 表不节点类型、MatchMethod 表 示匹配模式、value表示路径节点中包括的字符。
[0077] 可选地,化odeType 用 Η 表示 TJ1EAD_WDE,D 表示 T_DATA_WDE ;MatchMethod 用 P 表示T_PREFIX,用S表示T_SUFFIX,用E表示T_EQ ;value表示该路径节点中包括的字符。
[0078] 具体结合图3所示的示例进行说明,假设从终端102中的客户端ID_1,接收的 HTTP请求中获取由字符串表示的访问路径为:
[0079] 1) Host: 0. m CGI:/t。
[0080] 其中,Host为后缀匹配,CGI为前缀匹配,则对于Host字段中的字符"ο. m",可W 按照"m","ο"的顺序来在具有树状结构的路径节点集合中设置与化St字段中的字符 "o.m"对应的路径节点,例如,在图3中,化St字段中的字符"o.m"对应的路径节点依次为: "D,S,m"、"D,S,. "、"D,S,0",其中,路径节点"D,S,m"为路径节点"H,S,Host"的子节点。 相似地,可W按照的顺序来在具有树状结构的路径节点集合中设置与CGI字段中 的字符Vt"对应的路径节点,例如,在图3中,CGI字段中的字符"/t"对应的路径节点依 次为路径节点"D,P,/"、"0, P,t",其中,路径节点"D,P,/"为路径节点"H,P,CGI"的子节 点。
[0081] 可选地,在本实施例中,当不同的路径中包括 相同的连续字符串,则与上述相同的 连续字符串对应的路径可由一个包括上述根节点在内的多个相连的路径节点构成的路径 节点子集合表示。
[008引具体结合图3所示的示例进行说明,假设从终端102中的客户端ID_1,客户端 ID_2接收的HTTP请求中获取由字符串表示的访问路径为:
[0083] 1) Host: 0. m CGI:/t ;
[0084] 2)Host:m. ο. m CGI:null。
[0085] 其中,两个不同路径中化St包括相同的连续字符串"o.m",则可W如图3所示, 将相同的连续字符串所对应的路径节点合并,使得两条路径共用相同的路径节点子集合: "D,S,m"、"D,S,. "、"D,S,0"。
[0086] 可选地,在本实施例中,在预先建立的具有树状结构的路径节点集合中查找与访 问路径匹配的目标路径包括:
[0087] S1,从路径节点集合中查找是否存在由一个路径节点子集合所表示的目标路径, 其中,一个路径节点子集合中从根节点到叶子节点所构成的字符串(例如,上述路径1中的 字符串"Host:o.m CGI:/t")与访问路径中的字符串(例如,"Host:o.m CGI:/t")相同。 [008引可选地,在本实施例中,上述路径节点中可W包括但不限于一个节点字符,则一个 路径节点子集合中从根节点到叶子节点所构成的字符串与访问路径中的字符串相同可W 包括但不限于;上述路径中的多个连续路径节点中的字符分别与HTTP请求中获取的访问 路径中的字符相同。
[0089] 具体结合W下示例进行说明,假设从HTTP请求中获取的由字符串标识的访问路 径为册ST:QQ. COM,则在预先建立的具有树状集合的路径节点集合中查找各个路径中路径 节点中的节点字符是否与访问路径中的字符依次相同,若相同,则表示上述路径节点子集 合中从根节点到叶子节点所构成的字符串与访问路径中的字符串相同,进而可W判断出在 所述路径节点集合中查找到与所述访问路径匹配的所述目标路径。
[0090] 通过本申请提供的实施例,通过在预先建立的具有树状结构的路径节点集合中查 找从HTTP请求中获取的与访问路径匹配的目标路径,其中,上述路径节点集合中从根节点 到每个叶子节点的路径节点子集合表示一条被允许访问的路径,不同的路径中相同的连续 字符串由一个路径节点子集合中包括根节点在内的多个相连的路径节点表示,克服了现有 技术通过遍历所有数组W实现对白名单的匹配所导致的校验效率较低的问题,通过将路径 中相同的路径节点合并,实现了缩短校验时间,进而提高执行HTTP请求所指示的请求操作 的效率。
[0091] 作为一种可选的方案,从路径节点集合中查找是否存在由一个路径节点子集合所 表示的目标路径包括:
[0092] S1,重复执行W下操作,直到生成查找结果,其中,当前节点初始化为根节点,当前 字符初始化为HTTP请求中用于表示访问路径的字符串中的校验起始字符:
[0093] S10,判断当前节点是否为根节点"H, root";
[0094] S12,若当前节点为根节点,则将当前节点设置为根节点的子节点,例如,图3所示 的路径节点"H,S,册ST";
[009引S14,若当前节点不为根节点,则判断当前节点中包含的字符是否为当前字符; [0096] S16,若当前节点中包含的字符为当前字符,则判断当前节点是否为叶子节点,若 当前节点为叶子节点,则将根节点到当前节点所表示的路径作为目标路径,并生成由第一 查找信息表示的查找结果,其中,第一查找信息用于表示在路径节点集合中查找到与访问 路径匹配的目标路径;若当前节点不为叶子节点,则将当前节点的子节点中选择一个子节 点,其中,一个子节点中包含的字符为当前字符的下一个字符,将一个子节点设置为当前节 点,并将当前字符的下一个字符设置为当前字符;
[0097] 例如,W字符串为"化st:o.m CGI:/t"为例,假设上述字符串中册ST字段采用"从 后缀到前缀"的顺序排列,CGI字段采用"从前缀到后缀"或"从前缀开始"的顺序排列,则字 符串中字符的顺序为;"Host", "m","0","CGI ","/","t",即,"Host"的下一个字符为 "m","m"的下一个字符为的下一个字符为"0","0"的下一个字符为"CGI","CGI" 的下一个字符为的下一个字符为"t"。
[0098] 也就是说,上述当前字符的下一个字符可W为HTTP请求中用于表示访问路径的 字符串中当前字符的下一个字符,其中,上述字符串中的字符按照与匹配模式对应的排列 顺序排列。
[0099] S18,若当前节点中包含的字符不为当前字符,则生成由第二查找信息表示的查找 结果,其中,第二查找信息用于表示在路径节点集合中未查找到与访问路径匹配的目标路 径。
[0100] 可选地,在本实施例中,上述校验起始字符包括但不限于W下之一:
[0101] 1)HTTP请求中用于表示访问路径的字符串中的册ST字段中的第一个字符,例如, 当访问路径为"化St: 0. m CGI: /t"时,册ST字段中的第一个字符为"m"或"册ST";
[0102] 2)HTTP请求中用于表示访问路径的字符串中的册ST字段中的最后一个字符,例 女口,当访问路径为"化st:o. m CGI:/t"时,册ST字段中的最后一个字符为"0";
[0103] 3)HTTP请求中用于表示访问路径的字符串中的CGI字段中的第一个字符,例如, 当访问路径为"化St: 0. m CGI: /t"时,CGI字段中的第一个字符为"/"或"CGI";
[0104] 4)HTTP请求中用于表示访问路径的字符串中的CGI字段中的最后一个字符,例 女口,当访问路径为"化st:o. m CGI :/t"时,CGI字段中的最后一个字符为"t";
[0105] 5)HTTP请求中用于表示访问路径的字符串中的第一个字符,例如,当访问路径为 "Host: 0. m CGI: /t"时,第一个字符为"m"或"册ST";
[0106] 6)HTTP请求中用于表示访问路径的字符串中的最后一个字符,例如,当访问路径 为"Host: 0. m CGI: /t"时,最后一个字符为" t";
[0107] 具体结合图3所示的示例进行描述,假设当前节点为访问路径(例如,"化st:o. m CGI :/t")中册ST字段对应的路径节点"H,S,册ST"、且路径节点"H,S,册ST"中的字符 "化St"与当前字符"化St"相同,则将该路径节点"H,S,册ST"的子节点"D,S,m"设置为 当前节点,并将访问路径中的册ST字段中当前字符的下一个字符"m"设置为当前字符。然 后,判断当前节点"D,S,m"中的字符是否为当前字符"m"。由于当前节点中的字符与当前 字符相同,因此,继续将路径节点"D,S,m"的子节点"D,S,设置为当前节点,并将访问路 径中的册ST字段中位于当前字符之后的下一个字符设置为当前字符,W此类推。
[010引若当前节点为叶子节点"D,P,t "、且路径节点"H,S,册ST"中的字符"t"与当前字 符"t"相同,则将上述根节点"H,root"到叶子节点"D,P,t"所表示的路径作为目标路径, 并生成查找结果。
[0109] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为 依据本发明,某些步骤可W采用其他顺序或者同时进行。其次,本领域技术人员也应该知 悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明 所必须的。
[0110] 通过W上的实施方式的描述,本领域的技术人员可W清楚地了解到根据上述实施 例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可W通过硬件,但很多 情况下前者是更佳的实施方式。基于送样的理解,本发明的技术方案本质上或者说对现有 技术做出贡献的部分可软件产品的形式体现出来,该计算机软件产品存储在一个存储 介质(如R0M/RAM、磁碟、光盘)中,包括若干指令用W使得一台终端设备(可W是手机,计 算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0111] 实施例2
[0112] 根据本发明实施例,还提供了一种处理HTTP请求的装置可W但不限于位于如图1 所示的网络环境中,其中,发送HTTP请求的客户端可W但不限于位于图1所示的终端102 中,图1所示的服务器104将通过网络接收上述HTTP请求,其中,上述服务器104也可W用 终端替换。可选地,在本实施例中,上述网络可W包括但不限于;广域网、城域网、局域网。上 述服务器104将从上述HTTP请求中获取由字符串表示的访问路径,并查找与上述访问路径 匹配的目标路径,并在查找到上述目标路径后,执行上述HTTP请求所指示的请求操作。可 选地,在本实施例中,上述终端可W包括但不限于:手机、平板电脑、笔记本电脑、PC机。
[0113] 可选地,在本实施例中,上述处理HTTP请求的装置可W如图8所示,该装置包括:
[0114] 1)接收单元802,用于接收客户端发送的HTTP请求;可选地,上述HTTP请求可W 为终端102上安装的客户端发送的用于访问网页的HTTP请求。可选地,上述HTTP请求中 可W但不限于包括:访问路径,例如,上述访问路径可W但不限于为上述网页的网址,如, "Host:0. m CGI:/t,,,或者为,"Host:m. o.m,,。
[0115] 2)获取单元804,用于从HTTP请求中获取由字符串表示的访问路径;
[0116] 3)查找单元806,用于在预先建立的具有树状结构的路径节点集合中查找与访问 路径匹配的目标路径,其中,路径节点集合中从根节点到每个叶子节点的路径节点子集合 表示一条被允许访问的路径,不同的路径中相同的连续字符串由一个路径节点子集合中包 括根节点在内的多个相连的路径节点表示;
[0117] 可选地,图3示出了预先建立的具有树状结构的路径节点集合的一种示意图,需 要说明的是,图3所示的路径节点集合仅为一种示例,本实施例中的路径节点集合可W根 据不同的场景进行配置,如图4所示。
[0118] 如图3所示,具有树状结构的路径节点集合可W用于表示4条被允许访问的路 径:
[0119] l)Host:o. m CGI :/t ;
[0120] 2)Host:m.o.m CGI :null (即,CGI 为空);
[0121] 3)Host:o. n CGI: /m ;
[0122] 4)Host:o. n CGI: /n ;
[012引具体地,如图3所示,根节点"H,root"到叶子节点"D,P,t"的路径节点子集 合1表示上述路径1)。目P,路径节点子集合1中的路径节点"H,root ","H,S,册ST ", "0, S,m","0, S,. 'V'D,S,0'V'D,P,CGI","0, P,/ 'V'D,P,t"表示上述路径 1) "Host :0. m CGI:/t";
[0124] 根节点"H,root"到叶子节点"D,S,m"的路径节点子集合2表示上述路径。。即, 路径节点子集合 2 中的路径节点"H,root", "H,S,册ST","D,S,m","0, S,. ","0, S,0", "D,S,. V'D,S,m"表示上述路径。"Host:m. o.m CGI:nuir,;
[012引根节点"Η, root"到叶子节点"D,P,m"的路径节点子集合3表示上述路径如。即, 路径节点子集合 3 中的路径节点"H,root", "H,S,册ST","D,S,η","D,S,. ","D,S,0", 。0乂〔61","0乂/",。0乂111"表示上述路径:3)。化31:0.11〔61:/111";
[012引根节点"Η,root"到叶子节点" D,Ρ,η"的路径节点子集合4表示上述路径4)。即, 路径节点子集合 4 中的路径节点"Η,root", "Η,S,册ST","D,S,η","D,S,. ","D,S,0", 。0,口,〔61","0,口,/","0,口,11"表示上述路径4)。化31:0.11〔61:/11"。
[0127] 其中,上述路径1)和2)共用了路径节点"Η,root", "H,S,册ST", "化S,m","化S,.化S,0"。也就是说,上述路径1)和。中相同的连续字符串"化st:o. m"由上述路径节点"H,root", "H,S,册ST","D,S,m","D,S,. ","D,S,0"表示。
[0128] 类似地,上述路径扣和4)共用了路径节点"H,root", "H,S,册ST", "D,S,η", "D,S,. ","D,S,〇","0, P,CGI","D,P,/"。也就是说,上述路径 3)和 4)中相同的 连续字符串"H〇st:o. η CGI:/',由上述路径节点"H,root'V'H,S,册ST'V'D,S,n',,"D,S,. ',, "D,S,0","D,P,CGI", "D,P,/"表示。
[012引在图3中,路径1)-4)中的册ST字段中的字符(例如,路径1)中的"ο. m")按照 "从后缀到前缀"的顺序通过路径节点来表示。W路径1为例,册ST字段中的字符为"ο. m", 其中,"m"为后缀,"η"为前缀,上述"从后缀到前缀"的顺序指的是:路径节点"化S,m"为 路径节点"H,S,册ST"的子节点,路径节点"D,S,."为路径节点"D,S,m"的子节点,"D,S,0" 为路径节点"化S,. ',的子节点。换句话说,"H,S,册ST',,"化S,m","化S,. "化S,0',依次 连接。
[0130] 需要说明的是,上述按照"从后缀到前缀"的顺序通过路径节点来表示路径1)-4) 中的册ST字段中的字符仅是一种示例,本实施例不仅限于此,例如,还可W按照"从前缀到 后缀"或"从前缀开始"的顺序通过路径节点来表示路径1) -4)中的册ST字段中的字符,其 中,"从前缀开始"的顺序适用于册ST字段仅包括前缀、而不包括后缀的场景。W路径1为 例,册ST字段中的字符为"〇. m",其中,"m"为后缀,"η"为前缀,上述"从前缀到后缀"的顺 序指的是:路径节点"D,S,0"为路径节点"Η,S,册ST"的子节点,路径节点"D,S,."为路径 节点"化S,0"的子节点,"化S,m"为路径节点"化S,的子节点。
[0131] 可选地,在预先建立的具有树状结构的路径节点集合中查找与访问路径匹配的 目标路径的过程中,可W从根节点开始比较访问路径中的字符与路径节点中的字符是否 相同。由于路径节点集合具有树状结构,因此,在将访问路径中的字符与具有多个子节点 (例如,子节点1 "化P,CGI",子节点2 "化S,.的路径节点(节点"D,S,〇")进行比对 之后,可W选择上述一个子节点(例如,子节点1 "化P,CGI")所在的分支(例如,子节点 1 "化P,CGI"到叶子节点"D,P,t")继续与访问路径中剩余的字符继续比对。若该分支比对 结果失败(例如,访问路径为"化St 对应于图3中的路径2)),送转到路径节点(节 点"化S,〇")的其他子节点(例如,子节点2 "化S,所在的分支进行比对,而不需要重新 再比对路径节点(节点"D,S,o")之前已经比对过的节点(例如,"H,root","H,S,册ST", "化S,m","化S,."化S,0"),从而减少了比对的次数,即,提高了在处理HTTP请求时对 HTTP请求进行校验的效率。
[0132] 也就是说,不同的路径中相同的连续字符串在比对的过程中最多仅需要比对一 次,即,判断出具有树状结构的路径节点集合中是否存在与访问路径匹配的目标路径。
[0133] 4)校验单元808,用于在上述路径节点集合中查找到与上述访问路径匹配的上述 目标路径时,使用与上述目标路径对应的校验条件对上述HTTP请求进行校验;
[0134] 可选地,上述路径与校验条件之间的对应关系可W预先W映射表的方式存储在服 务器上。W上述路径1)-4)为例,映射表可W如下所示:
[0135]
[0136] 上述映射表存储在服务器上,仅是一种示例,上述映射表还可W存储在其他设备 中,上述服务器通过网络从其他设备中可W获取到上述映射表,本实施例对此不作限定。
[0137] 5)执行单元810,用于在上述HTTP请求满足上述校验条件时,执行HTTP请求所指 示的请求操作。
[013引可选地,上述预先建立的具有树状结构的路径节点集合可W用来表示"白名单"中 记录的被允许访问的路径,例如,"白名单"中记录的每条被允许访问的路径可W由从根节 点到一个叶子节点的路径节点子集合表示。换句话说,"白名单"中记录的被允许访问的路 径通过树状结构来表示。可选地,若在路径节点集合中查找到与访问路径匹配的目标路径, 则表示HTTP请求中的访问路径为"白名单"中记录的被允许访问的路径。
[0139] 在本发明实施例中,采用树状结构来表示白名单中被允许访问的路径,且对于不 同的路径中相同的连续字符串,仅由相同的路径节点表示一次,而不需要如现有技术中所 采用的分别通过不同的数组成员进行表示。送样,在查找的过程中不需要遍历每一条根节 点到叶子节点所表示的路径,即可W判断出HTTP请求的访问路径是否为白名单中被允许 访问的路径,从而提高了在处理HTTP请求时对HTTP请求进行校验的效率,进而解决了在处 理HTTP请求时对HTTP请求进行校验的效率较低的技术问题。
[0140] 作为一种可选的方案,如图11所示,本实施例中的处理HTTP请求的装置还包括: 发送单元1102,用于在使用与上述目标路径对应的校验条件对上述HTTP请求进行校验之 后,若上述HTTP请求不满足上述校验条件,则向上述客户端发送用于指示拒绝访问的响应 消息。
[0141] 可选地,在本实施例中,在接收客户端发送的HTTP请求之前,需要预先建立上述 具有树状结构的路径节点集合。W下结合具体的示例和附图来描述建立上述具有树状结构 的路径节点集合的方案。需要说明的是,W下方案仅是一种示例,本实施例中建立上述具有 树状结构的路径节点集合的方案不仅限于此。
[0142] 作为一种可选的方案,如图10所示,本实施例中的处理HTTP请求的装置还包括:
[0143] 1)第一设置单元1002,用于在接收客户端发送的HTTP请求之前,设置根节点,女口 图3中的根节点"Η, root";
[0144] 。第二设置单元1004,用于设置根节点的子节点(例如,"Η, S,册ST"),其中,每 个子节点中包含的字符表示一个被允许访问的路径中的册ST字段,不同的被允许访问的 路径中的相同的册ST字段由一个子节点中包含的字符表示;
[0145] 3)第Η设置单元1006,用于在每个子节点下设置多个路径节点直到叶子节点,其 中,不同的被允许访问的路径中相同的连续字符串由多个路径节点中的多个相连的路径节 点表不。
[0146] W被允许访问的路径包括图3中的4条路径为例,图5-图7示出了具有树状结构 的路径节点集合的建立过程。
[0147] 如图5所示,路径节点集合初始化为空,在此基础上,先在路径节点集合中 形成路径1) "Host: 0. m CGI: /t"的树状结构,即,路径节点"Η,root VH,S,册ST", "0, S,m","0, S,. ',,"0, S,〇',,"0, P,CGI',,"0, P,/',,"0, P,t"依次连接。
[0148] 进一步,在图5的基础上,再在路径节点集合中形成路径2)"化st :m. 0. m CGI:null"。由于路径1)和2)具有相同的连续字符串"化st:o.m",因此,仅需要在图5的 基础上,将路径节点"D,S,设置为路径节点"D,S,0"的子节点,再将路径节点"D,S,m"设 置为路径节点"D,S,的子节点,如图6所示。在图6中,上述路径1)和2)共用了路径节 点"H, root,V'H, S,册ST,V'D, S, m","D, S,.,V'D, S, 0"。
[0149] W相同的方式,在图6的基础上,再在路径节点集合中形成路径3)"化st:o. η CGI:/m"。由于路径3)中的册ST字段中的字符"η"与路径1)和路径2)中的册ST字段 中的字符"m"不同,因此,将路径节点"化S,η"作为路径节点"H,S,册ST"的一个新的子节 点,并在路径节点"化S,η"之后依次连接路径节点"化S,."化S,0","化Ρ,CGI","化Ρ,/", "D, Ρ, m",图 7 所示。
[0150] 进一步,在图7的基础上,再在路径节点集合中形成路径4)"化st:o. nCGI :/n"。 由于上述路径3)和4)具有相同的连续字符串"化st:o. η CGI:/",因此,仅需要在图7的 基础上,将路径节点"化P,η"设置为路径节点"化P,/"的子节点,如图3所示。在图3中, 上述路径扣和 4)共用了路径节点"Η,root", "Η,S,册ST","0, S,η","0, S,. ","0, S,0", "D,P,CGI","D,P,/"。
[015。 可选地,在树状结构中,若一个路径节点存在多个子节点,则可W按照子节点中包 括的字符的顺序来设置上述子节点的遍历顺序(或称排列顺序)。例如,由于字符"m"位于 字符"η"之前,因此,可W将路径节点"D,S,m"作为路径节点"H,S,册ST"的子节点排列在 路径节点"化S,η"的左侧,送样,在具有树状结构的路径节点集合中执行查找操作时,优先 遍历路径节点"化S,m",然后再遍历路径节点"化S,η"。
[0152] 需要说明的是,上述按照子节点中包括的字符的顺序来设置上述子节点的排列顺 序,送仅是一种示例,本实施例对此不作限定。
[0153] 可选地,在本实施例中,上述每一个路径节点中可W包括但不限于W下至少之一: 节点类型、匹配模式、节点字符,其中,上述节点类型可W包括但不限于:根节点、子节点、叶 子节点,上述叶子节点指一条路径的最后一个路径节点。上述匹配模式可W包括但不限于 W下至少之一;前缀匹配、后缀匹配。其中,上述前缀匹配指的是;从前往后依次读取HTTP 请求中访问路径中的字符;上述后缀匹配指的是:从后往前依次读取HTTP请求中访问路径 中的字符。
[0154] 可选地,可W但不限于通过W下函数来设置每个路径节点。
[0155]
[0156]
[0157] 结合上述描述W及图3中所示的路径节点可知,一个路径节点可W用3元素 <QnodeType, MatchMethod, value〉来表不,其中,QnodeType 表不节点类型、MatchMethod 表 示匹配模式、value表示路径节点中包括的字符。
[0158] 可选地,化odeType 用 Η 表示 TJ1EAD_WDE,D 表示 T_DATA_WDE ;MatchMethod 用 P 表示T_PREFIX,用S表示T_SUFFIX,用E表示T_EQ ;value表示该路径节点中包括的字符。
[0159] 具体结合图3所示的示例进行说明,假设从终端102中的客户端ID_1,接收的 HTTP请求中获取由字符串表示的访问路径为:
[0160] 1) Host: 0. m CGI:/t。
[016。 其中,Host为后缀匹配,CGI为前缀匹配,则对于Host字段中的字符"ο. m",可W 按照"m","ο"的顺序来在具有树状结构的路径节点集合中设置与化St字段中的字符 "o.m"对应的路径节点,例如,在图3中,化St字段中的字符"o.m"对应的路径节点依次为: "D,S,m"、"D,S,. "、"D,S,0",其中,路径节点"D,S,m"为路径节点"H,S,Host"的子节点。 相似地,可W按照的顺序来在具有 树状结构的路径节点集合中设置与CGI字段中 的字符Vt"对应的路径节点,例如,在图3中,CGI字段中的字符"/t"对应的路径节点依 次为路径节点"D,P,/"、"0, P,t",其中,路径节点"D,P,/"为路径节点"H,P,CGI"的子节 点。
[0162] 可选地,在本实施例中,当不同的路径中包括相同的连续字符串,则与上述相同的 连续字符串对应的路径可由一个包括上述根节点在内的多个相连的路径节点构成的路径 节点子集合表示。
[0163] 具体结合图3所示的示例进行说明,假设从终端102中的客户端ID_1,客户端 ID_2接收的HTTP请求中获取由字符串表示的访问路径为:
[0164] 1) Host: 0. m CGI:/t ;
[016引 2)Host:m. 0. m CGI :null。
[016引其中,两个不同路径中册ST包括相同的连续字符串"ο. m",则可W如图3所示, 将相同的连续字符串所对应的路径节点合并,使得两条路径共用相同的路径节点子集合: "D,S,m"、"D,S,. "、"D,S,0"。
[0167] 作为一种可选的方案,如图9所示,查找单元806包括:
[0168] 1)查找模块902,用于从路径节点集合中查找是否存在由一个路径节点子集合所 表示的目标路径,其中,一个路径节点子集合中从根节点到叶子节点所构成的字符串(例 女口,上述路径1中的字符串"化st:o.mCGI:/t")与访问路径中的字符串(例如,"化st:o.m CGI:/t")相同。
[0169] 可选地,在本实施例中,上述路径节点中可W包括但不限于一个节点字符,则一个 路径节点子集合中从根节点到叶子节点所构成的字符串与访问路径中的字符串相同可W 包括但不限于;上述路径中的多个连续路径节点中的字符分别与HTTP请求中获取的访问 路径中的字符相同。
[0170] 具体结合W下示例进行说明,假设从HTTP请求中获取的由字符串标识的访问路 径为册ST:QQ. COM,则在预先建立的具有树状集合的路径节点集合中查找各个路径中路径 节点中的节点字符是否与访问路径中的字符依次相同,若相同,则表示上述路径节点子集 合中从根节点到叶子节点所构成的字符串与访问路径中的字符串相同,进而可W判断出在 所述路径节点集合中查找到与所述访问路径匹配的所述目标路径。
[0171] 通过本申请提供的实施例,通过在预先建立的具有树状结构的路径节点集合中查 找与访问路径匹配的目标路径,从而减少了对所有路径的遍历,进而实现了缩短对HTTP请 求的校验时间,提高了执行HTTP请求所指示的请求操作的效率。
[0172] 作为一种可选的方案,查找模块902包括:
[0173] 1)生成子模块,用于重复执行W下操作,直到生成查找结果,其中,当前节点初始 化为根节点,当前字符初始化为HTTP请求中用于表示访问路径的字符串中的校验起始字 符:
[0174] S1,判断当前节点是否为根节点"H,root";
[0175] S2,若当前节点为根节点,则将当前节点设置为根节点的子节点,例如,图3所示 的路径节点"H,S,册ST";
[0176] S3,若当前节点不为根节点,则判断当前节点中包含的字符是否为当前字符;
[0177] S4,若当前节点中包含的字符为当前字符,则判断当前节点是否为叶子节点,若当 前节点为叶子节点,则将根节点到当前节点所表示的路径作为目标路径,并生成由第一查 找信息表示的查找结果,其中,第一查找信息用于表示在路径节点集合中查找到与访问路 径匹配的目标路径;若当前节点不为叶子节点,则将当前节点的子节点中选择一个子节点, 其中,一个子节点中包含的字符为当前字符的下一个字符,将一个子节点设置为当前节点, 并将当前字符的下一个字符设置为当前字符;
[017引例如,W字符串为"化st:o.m CGI:/t"为例,假设上述字符串中册ST字段采用"从 后缀到前缀"的顺序排列,CGI字段采用"从前缀到后缀"或"从前缀开始"的顺序排列,则字 符串中字符的顺序为;"Host", "m","0","CGI ","/","t",即,"Host"的下一个字符为 "m","m"的下一个字符为的下一个字符为"0","0"的下一个字符为"CGI","CGI" 的下一个字符为的下一个字符为"t"。
[0179] 也就是说,上述当前字符的下一个字符可W为HTTP请求中用于表示访问路径的 字符串中当前字符的下一个字符,其中,上述字符串中的字符按照与匹配模式对应的排列 顺序排列。
[0180] S5,若当前节点中包含的字符不为当前字符,则生成由第二查找信息表示的查找 结果,其中,第二查找信息用于表示在路径节点集合中未查找到与访问路径匹配的目标路 径。
[0181] 可选地,在本实施例中,上述校验起始字符包括但不限于W下之一:
[0182] 1)HTTP请求中用于表示访问路径的字符串中的册ST字段中的第一个字符,例如, 当访问路径为"化St: 0. m CGI: /t"时,册ST字段中的第一个字符为"m"或"册ST";
[0183] 2)HTTP请求中用于表示访问路径的字符串中的册ST字段中的最后一个字符,例 女口,当访问路径为"化st:o. m CGI:/t"时,册ST字段中的最后一个字符为"0";
[0184] 3)HTTP请求中用于表示访问路径的字符串中的CGI字段中的第一个字符,例如, 当访问路径为"化St: 0. m CGI: /t"时,CGI字段中的第一个字符为"/"或"CGI";
[0185] 4)HTTP请求中用于表示访问路径的字符串中的CGI字段中的最后一个字符,例 女口,当访问路径为"化st:o. m CGI:/t"时,CGI字段中的最后一个字符为"t";
[0186] 5)HTTP请求中用于表示访问路径的字符串中的第一个字符,例如,当访问路径为 "Host: 0. m CGI: /t"时,第一个字符为"m"或"册ST";
[0187] 6)HTTP请求中用于表示访问路径的字符串中的最后一个字符,例如,当访问路径 为"Host: 0. m CGI: /t"时,最后一个字符为'' t";
[0188] 具体结合图3所示的示例进行描述,假设当前节点为访问路径(例如,"化st:o. m CGI :/t")中册ST字段对应的路径节点"H,S,册ST"、且路径节点"H,S,册ST"中的字符 "化St"与当前字符"化St"相同,则将该路径节点"H,S,册ST"的子节点"D,S,m"设置为 当前节点,并将访问路径中的册ST字段中当前字符的下一个字符"m"设置为当前字符。然 后,判断当前节点"D,S,m"中的字符是否为当前字符"m"。由于当前节点中的字符与当前 字符相同,因此,继续将路径节点"D,S,m"的子节点"D,S,设置为当前节点,并将访问路 径中的册ST字段中位于当前字符之后的下一个字符设置为当前字符,W此类推。
[0189] 若当前节点为叶子节点"D,P,t "、且路径节点"H,S,册ST"中的字符"t"与当前字 符"t"相同,则将上述根节点"H,root"到叶子节点"D,P,t"所表示的路径作为目标路径, 并生成查找结果。
[0190] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0191] 实施例3
[0192] 本发明的实施例还提供了一种用于实施处理HTTP请求的方法的服务器,如图1所 示的服务器104。可选地,在本实施例中,上述服务器可W为如图1所示的网络环境中的服 务器,其中,发送HTTP请求的客户端可W但不限于位于图1所示的终端102中,图1所示 的服务器104将通过网络接收上述HTTP请求,其中,上述服务器104也可W用终端替换。 可选地,在本实施例中,上述网络可W包括但不限于;广域网、城域网、局域网。上述服务器 104将从上述HTTP请求中获取由字符串表示的访问路径,并查找与上述访问路径匹配的目 标路径,并在查找到上述目标路径后,执行上述HTTP请求所指示的请求操作。可选地,在本 实施例中,上述终端可W包括但不限于:手机、平板电脑、笔记本电脑、PC机。
[0193] 可选地,在本实施例中,如图12所示,上述一种用于实施处理HTTP请求的方法的 服务器包括:
[0194] 1)通讯接口;例如,IE邸802. 11网络接口 1202, W及,IE邸802. 16网络接口 1204,用于接收客户端发送的HTTP请求;可选地,上述IE邸802. 11网络接口 1202 W及IE邸 802. 16网络接口 1204仅为一种示例,本实施例中的通讯接口可W仅包括IE邸802. 11网络 接口 1202 W及IE邸802. 16网络接口 1204中的一个,或者,包括其他接口,本实施例对此 不作限定。
[0195] 2)处理器1206,被设置为:从HTTP请求中获取由字符串表示的访问路径;在预先 建立的具有树状结构的路径节点集合中查找与访问路径匹配的目标路径,其中,路径节点 集合中从根节点到每个叶子节点的路径节点子集合表示一条被允许访问的路径,不同的路 径中相同的连续字符串由一个路径节点子集合中包括根节点在内的多个相连的路径节点 表示;在路径节点集合中查找到与访问路径匹配的目标路径时,使用与上述目标路径对应 的校验条件对上述HTTP请求进行校验;若上述HTTP请求满足上述校验条件,则执行HTTP 请求所指示的请求操作。
[0196] 3)存储器1208,被设置存储HTTP请求中获取的由字符串表示的访问路径,W及在 预先建立的具有树状结构的路径节点集合。
[0197] 可选地,在本实施例中,上述服务器还可W包括键盘1212和显示器1214,其中,键 盘1212和显示器1214通过设备接口 1210与处理器1206连接。需要说明的是,上述键盘 1212和显示器1214仅是一种示例,本实施例中的服务器可W包括键盘1212和显示器1214 中的一个,或者,包括其他外围设备,或者不包括送些外围设备,本实施例对此不作限定。
[0198] 可选地,在本实施例中,上述存储器中存储的内容也可W从除服务器104之外的 其他服务器获取,本实施例对此不做任何限定。
[0199] 可选地,在本实施例中,上述存储器还可W用于存储上述实施例1中的处理HTTP 请求的方法中所存储的其他数据。
[0200] 可选地,本实施例中的各个部件(例如,处理器1206)所执行的具体操作可W参考 上述实施例1和实施例2中所描述的示例,本实施例在此不再赏述。
[0201] 实施例4
[0202] 本发明的实施例还提供了一种用于实施处理HTTP请求的方法的存储介质。可选 地,在本实施例中,上述存储介质可W应用于如图1所示的网络环境中的一个终端或服务 器中,其中,发送HTTP请求的客户端可W但不限于位于图1所示的终端102中,图1所示 的服务器104将通过网络接收上述HTTP请求,其中,上述服务器104也可W用终端替换。 可选地,在本实施例中,上述网络可W包括但不限于;广域网、城域网、局域网。上述服务器 104将从上述HTTP请求中获取由字符串表示的访问路径,并查找与上述访问路径匹配的目 标路径,并在查找到上述目标路径后,执行上述HTTP请求所指示的请求操作。可选地,在本 实施例中,上述终端可W包括但不限于:手机、平板电脑、笔记本电脑、PC机。
[0203] 可选地,在本实施例中,上述存储介质被设置为存储用于执行W下步骤的程序代 码:
[0204] S1,接收客户端发送的HTTP请求;
[0205] S2,从HTTP请求中获取由字符串表示的访问路径;
[0206] S3,在预先建立的具有树状结构的路径节点集合中查找与访问路径匹配的目标路 径,其中,路径节点集合中从根节点到每个叶子节点的路径节点子集合表示一条被允许访 问的路径,不同的路径中相同的连续字符串由一个路径节点子 集合中包括根节点在内的多 个相连的路径节点表示;
[0207] S4,若在路径节点集合中查找到与访问路径匹配的目标路径,则使用与上述目标 路径对应的校验条件对上述HTTP请求进行校验;若上述HTTP请求满足上述校验条件,则执 行HTTP请求所指示的请求操作。
[020引可选地,在本实施例中,上述存储介质可W包括但不限于;U盘、只读存储器(ROM, Read-Only Memoir)、随机存取存储器(RAM, Random Access Memoir)、移动硬盘、磁碟或者 光盘等各种可W存储程序代码的介质。
[0209] 可选地,本实施例中的存储介质还可W存储用于执行上述实施例1和实施例2中 的各个示例中的步骤的程序代码,本实施例在此不再赏述。
[0210] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0211] 上述实施例中的集成的单元如果W软件功能单元的形式实现并作为独立的产品 销售或使用时,可W存储在上述计算机可读取的存储介质中。基于送样的理解,本发明的技 术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可软 件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用W使得一 台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例 所述方法的全部或部分步骤。
[0212] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有 详述的部分,可W参见其他实施例的相关描述。
[0213] 在本申请所提供的几个实施例中,应该理解到,所掲露的客户端,可通过其它的方 式实现。其中,W上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一 种逻辑功能划分,实际实现时可W有另外的划分方式,例如多个单元或组件可W结合或者 可W集成到另一个系统,或一些特征可W忽略,或不执行。另一点,所显示或讨论的相互之 间的禪合或直接禪合或通信连接可W是通过一些接口,单元或模块的间接禪合或通信连 接,可W是电性或其它的形式。
[0214] 所述作为分离部件说明的单元可W是或者也可W不是物理上分开的,作为单元显 示的部件可W是或者也可W不是物理单元,即可W位于一个地方,或者也可W分布到多个 网络单元上。可W根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0215] 另外,在本发明各个实施例中的各功能单元可W集成在一个处理单元中,也可W 是各个单元单独物理存在,也可W两个或两个W上单元集成在一个单元中。上述集成的单 元既可W采用硬件的形式实现,也可W采用软件功能单元的形式实现。
[0216] W上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可W做出若干改进和润饰,送些改进和润饰也应 视为本发明的保护范围。
【主权项】
1. 一种处理HTTP请求的方法,其特征在于,包括: 接收客户端发送的HTTP请求; 从所述HTTP请求中获取由字符串表示的访问路径; 在预先建立的具有树状结构的路径节点集合中查找与所述访问路径匹配的目标路径, 其中,所述路径节点集合中从根节点到每个叶子节点的路径节点子集合表示一条被允许访 问的路径,不同的所述路径中相同的连续字符串由一个所述路径节点子集合中包括所述根 节点在内的多个相连的路径节点表示; 若在所述路径节点集合中查找到与所述访问路径匹配的所述目标路径,则使用与所述 目标路径对应的校验条件对所述HTTP请求进行校验; 若所述HTTP请求满足所述校验条件,则执行HTTP请求所指示的请求操作。2. 根据权利要求1所述的方法,其特征在于,所述在预先建立的具有树状结构的路径 节点集合中查找与所述访问路径匹配的目标路径包括: 从所述路径节点集合中查找是否存在由一个所述路径节点子集合所表示的所述目标 路径,其中,所述一个所述路径节点子集合中从所述根节点到所述叶子节点所构成的字符 串与所述HTTP请求中用于表示所述访问路径的字符串相同。3. 根据权利要求2所述的方法,其特征在于,所述从所述路径节点集合中查找是否存 在由一个所述路径节点子集合所表示的所述目标路径包括: 重复执行以下操作,直到生成查找结果,其中,当前节点初始化为所述根节点,当前字 符初始化为所述HTTP请求中用于表示所述访问路径的字符串中的校验起始字符: 判断所述当前节点是否为所述根节点; 若所述当前节点为所述根节点,则将所述当前节点设置为所述根节点的子节点; 若所述当前节点不为所述根节点,则判断所述当前节点中包含的字符是否为所述当前 字符; 若所述当前节点中包含的字符为所述当前字符,则判断所述当前节点是否为所述叶子 节点,若所述当前节点为所述叶子节点,则将所述根节点到所述当前节点所表示的路径作 为所述目标路径,并生成由第一查找信息表示的所述查找结果,其中,所述第一查找信息用 于表示在所述路径节点集合中查找到与所述访问路径匹配的所述目标路径;若所述当前节 点不为所述叶子节点,则将所述当前节点的子节点中选择一个子节点,其中,所述一个子节 点中包含的字符为所述当前字符的下一个字符,将所述一个子节点设置为所述当前节点, 并将所述当前字符的下一个字符设置为所述当前字符; 若所述当前节点中包含的字符不为所述当前字符,则生成由第二查找信息表示的所述 查找结果,其中,所述第二查找信息用于表示在所述路径节点集合中未查找到与所述访问 路径匹配的所述目标路径。4. 根据权利要求3所述的方法,其特征在于,所述校验起始字符为以下之一: 所述HTTP请求中用于表示所述访问路径的字符串中的HOST字段中的第一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的HOST字段中的最后一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的CGI字段中的第一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的CGI字段中的最后一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的第一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的最后一个字符。5. 根据权利要求1所述的方法,其特征在于,在所述接收客户端发送的HTTP请求之前, 还包括: 设置所述根节点; 设置所述根节点的子节点,其中,每个所述子节点中包含的字符表示一个所述被允许 访问的路径中的HOST字段,不同的所述被允许访问的路径中的相同的所述HOST字段由一 个所述子节点中包含的字符表示; 在每个所述子节点下设置多个路径节点直到叶子节点,其中,不同的所述被允许访问 的路径中相同的连续字符串由所述多个路径节点中的多个相连的路径节点表示。6. 根据权利要求1所述的方法,其特征在于,在使用与所述目标路径对应的校验条件 对所述HTTP请求进行校验之后,还包括: 若所述HTTP请求不满足所述校验条件,则向所述客户端发送用于指示拒绝访问的响 应消息。7. -种处理HTTP请求的装置,其特征在于,包括: 接收单元,用于接收客户端发送的HTTP请求; 获取单元,用于从所述HTTP请求中获取由字符串表示的访问路径; 查找单元,用于在预先建立的具有树状结构的路径节点集合中查找与所述访问路径匹 配的目标路径,其中,所述路径节点集合中从根节点到每个叶子节点的路径节点子集合表 示一条被允许访问的路径,不同的所述路径中相同的连续字符串由一个所述路径节点子集 合中包括所述根节点在内的多个相连的路径节点表示; 校验单元,用于在所述路径节点集合中查找到与所述访问路径匹配的所述目标路径 时,使用与所述目标路径对应的校验条件对所述HTTP请求进行校验; 执行单元,用于在所述HTTP请求满足所述校验条件时,执行所述HTTP请求所指示的请 求操作。8. 根据权利要求7所述的装置,其特征在于,所述查找单元包括: 查找模块,用于从所述路径节点集合中查找是否存在由一个所述路径节点子集合所表 示的所述目标路径,其中,所述一个所述路径节点子集合中从所述根节点到所述叶子节点 所构成的字符串与所述HTTP请求中用于表示所述访问路径的字符串相同。9. 根据权利要求8所述的装置,其特征在于,所述查找模块包括: 生成子模块,用于重复执行以下操作,直到生成查找结果,其中,当前节点初始化为所 述根节点,当前字符初始化为所述HTTP请求中用于表示所述访问路径的字符串中的校验 起始字符: 判断所述当前节点是否为所述根节点; 若所述当前节点为所述根节点,则将所述当前节点设置为所述根节点的子节点; 若所述当前节点不为所述根节点,则判断所述当前节点中包含的字符是否为所述当前 字符; 若所述当前节点中包含的字符为所述当前字符,则判断所述当前节点是否为所述叶子 节点,若所述当前节点为所述叶子节点,则将所述根节点到所述当前节点所表示的路径作 为所述目标路径,并生成由第一查找信息表示的所述查找结果,其中,所述第一查找信息用 于表示在所述路径节点集合中查找到与所述访问路径匹配的所述目标路径;若所述当前节 点不为所述叶子节点,则将所述当前节点的子节点中选择一个子节点,其中,所述一个子节 点中包含的字符为所述当前字符的下一个字符,将所述一个子节点设置为所述当前节点, 并将所述当前字符的下一个字符设置为所述当前字符; 若所述当前节点中包含的字符不为所述当前字符,则生成由第二查找信息表示的所述 查找结果,其中,所述第二查找信息用于表示在所述路径节点集合中未查找到与所述访问 路径匹配的所述目标路径。10. 根据权利要求9所述的装置,其特征在于,所述校验起始字符为以下之一: 所述HTTP请求中用于表示所述访问路径的字符串中的HOST字段中的第一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的最后一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的CGI字段中的第一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的CGI字段中的最后一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的第一个字符; 所述HTTP请求中用于表示所述访问路径的字符串中的最后一个字符。11. 根据权利要求7所述的装置,其特征在于,还包括: 第一设置单元,用于在所述接收客户端发送的HTTP请求之前,设置所述根节点; 第二设置单元,用于设置所述根节点的子节点,其中,每个所述子节点中包含的字符表 示一个所述被允许访问的路径中的HOST字段,不同的所述被允许访问的路径中的相同的 所述HOST字段由一个所述子节点中包含的字符表示; 第三设置单元,用于在每个所述子节点下设置多个路径节点直到叶子节点,其中,不同 的所述被允许访问的路径中相同的连续字符串由所述多个路径节点中的多个相连的路径 节点表示。12. 根据权利要求7所述的装置,其特征在于,还包括: 发送单元,用于在使用与所述目标路径对应的校验条件对所述HTTP请求进行校验之 后,若所述HTTP请求不满足所述校验条件,则向所述客户端发送用于指示拒绝访问的响应 消息。
【专利摘要】本发明公开了一种处理HTTP请求的方法及装置,其中,该方法包括:接收客户端发送的HTTP请求;从HTTP请求中获取由字符串表示的访问路径;在预先建立的具有树状结构的路径节点集合中查找与访问路径匹配的目标路径,其中,路径节点集合中从根节点到每个叶子节点的路径节点子集合表示一条被允许访问的路径,不同的路径中相同的连续字符串由一个路径节点子集合中包括根节点在内的多个相连的路径节点表示;若在路径节点集合中查找到与访问路径匹配的目标路径,则使用与目标路径对应的校验条件对HTTP请求进行校验;若HTTP请求满足校验条件,则执行HTTP请求所指示的请求操作。本发明解决了现有技术中在处理HTTP请求时对HTTP请求进行校验的效率较低的技术问题。
【IPC分类】H04L29/08, H04L29/06
【公开号】CN105491094
【申请号】CN201410495941
【发明人】彭贵春, 张海清, 苗军, 马杰, 董昭, 郑兴
【申请人】腾讯科技(深圳)有限公司
【公开日】2016年4月13日
【申请日】2014年9月24日

最新回复(0)