网络系统、反向代理、计算机设备、数据处理方法以及程序产品的制作方法

文档序号:8005476阅读:421来源:国知局
专利名称:网络系统、反向代理、计算机设备、数据处理方法以及程序产品的制作方法
技术领域
本发明涉及一种介乎网络和外部网络上的服务器其间的反向代理,尤其涉及当服务器设置cookie时在反向代理上的处理。
背景技术
反向代理放置在网络上的目的是为通过网络提供各种服务的服务器增强安全性。反向代理是代表服务器接收和中继请求的代理服务器。由于所有用户都只能通过反向代理访问这些服务器,因此不能直接从外部访问这些服务器。
在通过反向代理访问服务器的情形下,通常采用下述格式来发送访问请求(1)http//<reverse proxy>/<prefix>/<path name of webserver>,和(2)http∥<web server>/<path name of web server>,在此,HTTP(超文本传输协议)用作通信协议。下面描述利用HTTP访问web服务器的一个实例。
如图12所示,反向代理管理一个定义<prfix>和每个服务器名之间的对应关系的表格。当接收到格式(1)的请求时,反向代理访问图12的表格,并以格式(2)发送请求到对应该请求中的<prfix>的web服务器。
由于HTTP请求是无状态的,也就是说,相互独立,即使在接收到来自同一个用户的连续请求时,web服务器也认为它们是独立的请求。因此,引入cookie来维持这些请求之间的用户状态。
web服务器在用户的浏览器中设置一个cookie,以便它能以例如下述方式跟踪用户行为
当对来自用户的请求返回响应时,web服务器首先如下在该响应的信头中嵌入Set-CookieSet-Cookieid=001从此开始,一个类似下述的cookie被嵌入到来自该用户的所有请求信头中Cookieid=001基于这个信息,web服务器可跟踪用户已经访问了哪些页面。
带有所述嵌入的Set-Cookie的信头(下面称为Set-Cookie信头)具有下述句法Set-Cookie<name>=<value>;domain=<domain>;path=<path>;等等。
接收该Set-Cookie信头的浏览器根据对域和路径的详细说明限制返回的cookie的范围。换言之,只有在由域参数指定的范围内的web服务器中访问由路径参数指定的目录和子目录的情况下才返回cookie。
然而,在适当位置放置这种反向代理的网络系统中,将出现下述问题。即,当对从反向代理发送到服务器的请求的响应(例如,对格式(2)请求的响应)包括Set-Cookie信头时,如果反向代理返回该响应就好象它是针对发出该请求的浏览器(用户终端),则浏览器无法通过定义正确接受该Set-Cookie。
其原因是,尽管Set-Cookie的范围是由指定路径的参数确定的,但服务器的原域和路径不同于通过反向代理的域和路径。例如,当web服务器通过为域参数设置其自身所属的域的值设置Set-Cookie时,如果浏览器可识别的反向代理并不存在于该Set-Cookie指定的域中,浏览器将忽略该Set-Cookie。

发明内容
因此本发明的目的是在客户通过反向代理访问服务器的网络系统中透明地处理服务器所设置的cookie。
本发明的另一目的是为有效使用由服务器设置的cookie,提供一种带有Set-Cookie改写能力的反向代理。
为达到上述目的,本发明是通过下述网络系统实现的,即,所述网络系统包含在网络中提供的多个web服务器,以及中继外部访问到这多个web服务器的反向代理。在所述网络系统中,每个web服务器响应来自与该网络连接的某个终端的请求,以返回该终端一个包含用于维持所述终端状态的信息的响应。反向代理将包含在该响应中用于维持该终端状态的信息转换为该终端可识别的格式作为该网络的配置,并返回带有该转换信息的响应。换言之,反向代理删除在用于维护终端状态的信息中包含的指定web服务器的域的域参数,以相反顺序重新整理域参数的组成部分,并将经过重新整理的域参数嵌入到在所述信息中包含的web服务器的路径参数中。
本发明还可通过具有下述功能配置的反向代理实现。即,从web服务器中继数据到用户终端的反向代理包括信头改写部分,用于接收从web服务器返回到用户终端的数据,并将在所述数据中包含的Set-Cookie信头的域和路径的说明改写为用户终端可识别的格式;以及数据发送部分,用于发送给用户终端由信头改写部分改写的数据。反向代理还可包括链路/位置改写部分,用于依照包含由信头改写部分改写的域的说明的路径,改写在所述数据中包含的链路和位置的域及路径。
此外,本发明是通过具有下述功能配置的反向代理实现的。即,从用户终端中继请求到web服务器的反向代理包括web服务器名称获取部分,用于基于通过转换所接收请求的说明所获得的信息(域相关信息),从网络上的多个服务器中识别所述请求将被发送到的web服务器;URL改写部分,用于基于由web服务器名称获取部分识别的web服务器,将所述请求的访问目的地改写为所述web服务器的URL;以及请求传送部分,用于将所述请求传送到所述web服务器的URL。
此外,本发明可提供下述计算机设备,即,在终端和服务器之间中继HTTP请求的传输和HTTP响应的返回的计算机设备。所述计算机设备包括HTTP请求传送装置,用于中继带有从终端的浏览器发送的cookie的HTTP请求,以将其传送到作为所述HTTP请求的目的地的服务器;以及HTTP响应传送装置,用于响应所述HTTP请求接收从所述服务器返回的HTTP响应,删除在Set-Cookie信头中描述的域,以相反顺序重新整理所述域的组成部分,将所述重新整理的组成部分嵌入到在所述Set-Cookie信头中描述的路径中,并将带有所述Set-Cookie信头的HTTP响应传送到所述终端。在此配置中,当在web服务器上使用非缺省端口的端口时,HTTP请求传送装置指定在浏览器到反向代理的访问路径上web服务器的端口号以访问web服务器。HTTP响应传送装置根据该HTTP响应向Set-Cookie信头添加一个预定的固定字符串,以将带有所述Set-Cookie信头的HTTP响应传送到终端。此外,HTTP响应传送装置可用其自己的服务器名替换Set-Cookie信头中服务器的域参数,以将HTTP响应传送到终端。
此外,本发明可提供下述数据处理方法。即,用于计算机设备中继在第一计算机设备和第二计算机设备之间交换的数据的数据处理方法,包括步骤接收从第一计算机设备发送到第二计算机设备的响应;确定所述响应是否包含Set-Cookie信头;在所述响应包含Set-Cookie信头时改写Set-Cookie信头,以便基于所述Set-Cookie信头在第二计算机设备上设置的cookie将具备第二计算机设备可识别的格式;以及发送给第二计算机设备带有所述改写的Set-Cookie信头的响应。
用于计算机设备中继在第一计算机设备和第二计算机设备之间交换的数据的数据处理方法,还可包括步骤接收从第二计算机设备发送的请求;基于通过转换请求消息获得的信息识别发送请求的第一计算机设备;改写所述请求的访问目的地为第一计算机设备的URL;以及发送所述请求到识别的第一计算机设备的URL。
另外,本发明可通过控制计算机执行上述方法的每个步骤以执行数据处理或每个功能部分执行的处理的程序实现。该程序也可以存储介质的形式分配,如磁盘,光盘,半导体存储器,或任何其它记录介质,或通过网络传送。


图1是根据一个实施例的网络系统的配置简图。
图2是根据本实施例的反向代理的功能框图。
图3是根据本实施例的Set-Cookie信头改写部分的转换规则。
图4是在本实施例的网络系统中的数据流简图。
图5是根据本实施例的转换规则转换的cookie范围内的web服务器。
图6是带有对应相应情形的反向FQDN的Set-Cookie信头实例。
图7是在根据本实施例的反向代理中的处理流程图。
图8是在根据本实施例的反向代理中接收的响应数据实例。
图9是带有由根据本实施例的反向代理改写的Set-Cookie信头的响应数据实例。
图10是从根据本实施例的反向代理发送的响应数据实例。
图11是由从web服务器发送的Set-Cookie信头确定的cookie范围的简图,以及将被发送到作为cookie范围的相应一个web服务器的HTTP请求和cookie实例。
图12是在反向代理中管理的表格。
具体实施例方式
现在基于在附图中示意的实施例详细描述本发明。
图1是根据本实施例的网络系统的配置简图。
如图1所示,根据本实施例的网络系统包括web服务器200,反向代理100和用户终端300。web服务器200响应来自外部的请求提供内容并返cookie。反向代理100中继这些请求到web服务器200,并从web服务器200通过诸如LAN网络的网络400响应这些请求。用户终端300通过诸如因特网的网络500与反向代理100相连,以发送这些请求到web服务器200并从web服务器200接收响应。
图中示意,在根据本实施例的网络系统中,web服务器200为具有互不相同的域的多个web服务器201,202,...。web服务器可由分别具有浏览器301a,302a,...的多个终端301,302,...中的任何一个访问。下面假设即使在访问任何一个web服务器200的终端在物理上为同一个终端时,根据用户登录名,它们也被认为是不同终端。
下面通过考虑将HTTP用作在web服务器200和用户终端300之间发送和接收HTTP请求和HTTP响应的通信协议来描述本实施例。
图1所示的每个web服务器200可以是具备足以承受来自外部的访问负荷能力的计算机。web服务器200返回数据或文件(HTTP响应)以响应来自每个用户终端300的HTTP请求提供内容。web服务器200在返回HTTP响应到用户终端300之前在HTTP响应中包含Set-Cookie信头。从web服务器200返回的HTTP响应首先被在web服务器200和用户终端300之间提供的反向代理100接收。在本实施例中,带有由web服务器200嵌入的Set-Cookie信头的HTTP响应被反向代理100转换为预定格式。
反向代理100可以是具备在web服务器200和用户终端300之间中继HTTP请求和HTTP响应的网络能力的计算机。反向代理100中继来自用户终端300的HTTP请求以将其传送到由HTTP请求指定的web服务器200。此外,反向代理100中继从web服务器200返回的HTTP响应以响应所传送的HTTP请求。
在本实施例中,反向代理100从web服务器200接收包含Set-Cookie信头的HTTP响应,并将该HTTP响应中的Set-Cookie信头转换为预定格式。此外,反向代理100改写在HTTP响应中包含的链路和位置信头,并发送给发出该HTTP请求的用户终端300带有改写的Set-Cookie信头和链路位置信头的HTTP响应。后面将详细描述由反向代理100实现的这些功能。
另一方面,每个用户终端300可以是个人计算机或工作站。用户终端300具有诸如键盘和鼠标的操作设备,以及诸如监视器的显示设备。用户终端300还装有在程序控制之下工作的浏览器300a。浏览器300a不仅根据操作设备的操作在显示设备上显示浏览器窗口(屏幕),而且管理由不同web服务器200设置的cookie。接着,当操作用户终端300的用户在此浏览器窗口执行预定操作时,浏览器300a发送给联网的其中一个web服务器200一个HTTP请求。web服务器200响应该HTTP请求返回一个HTTP响应,用户终端允许浏览器300a基于从web服务器200返回的HTTP响应在其浏览器窗口上显示内容。
此外,基于从web服务器200返回的在HTTP响应中嵌入的Set-C00kie信头,在浏览器300a设置一个cookie。浏览器300a将该cookie保存或存储在用户终端300上,以便在发送HTTP请求之前将该cookie将嵌入到对该cookie范围内的web服务器200的下一或后一HTTP请求中。接收包含该cookie的HTTP请求的web服务器200保存该HTTP请求与从同一用户终端300发送的后续HTTP请求之间的相互关系以维持用户终端300的状态。
下面将基于从用户终端300发送的HTTP请求,集中于在从web服务器200返回的HTTP响应中包含的Set-Cookie信头,描述反向代理100如何工作。
域和路径参数是在HTTP响应中包含的每个Set-C00kie信头中描述的。基于有关域和路径参数的信息,在用户终端300的浏览器300a设置cookie的范围。参考图11,描述在从web服务器200返回到用户终端300的HTTP响应中包含的Set-Cookie信头,以及在从用户终端300发送到web服务器200的HTTP请求的请求信头中嵌入的cookie。
图11是由从web服务器200发送的Set-Cookie信头确定的cookie范围的简图,以及带有发送到cookie范围内对应一个web服务器200的cookie的HTTP请求实例。
在所示意的例子中,在网络中放置了多个web服务器200,即,web服务器201(域”www.sub.abc.com”)、web服务器202(域”www2.sub.abc.com”)web服务器203(域”www3.abc.com”)以及web服务器204(域”www.xyz.com”)。与web服务器200交换HTTP请求和HTTP响应的用户终端300通过网络连接。
web服务器201根据来自用户终端300的HTTP请求返回包含下述Set-Cookie信头(1)的HTTP响应(1)Set-Cookiename1=value1;domain=www.sub.abc.com;path=/Set-Cookiename2=value2;domain=www.sub.abc.com;path=/path1/Set-Cookiename3=value3;domain=sub.abc.com;path=/Set-Cookiename4=value4;domain=abc.com;path=/基于Set-Cookie信头(1),在用户终端300的浏览器300a设置和保存cookie。基于Set-Cookie信头(1)设置的cookie的范围如下name1www.sub.abc.comname2www.sub.abc.com/path1name3www.sub.abc.com;www2.sub.abc.comname4www.sub.abc.com;www2.sub.abc.com;www3.abc.com在图11所示的例子中,当应从用户终端300发送一个HTTP请求到web服务器201时,基于在浏览器300a中保存的cookie的范围将下述cookie嵌入到HTTP请求的请求信头中(2)GET/index.htmlCookiename1=value1;name3=value3;name4=value4当应从用户终端300发送一个HTTP请求到web服务器201的目录(”/path1/”)时,基于在浏览器300a中保存的cookie的范围将下述cookie嵌入到HTTP请求的请求信头中(3)GET/paht1/index.htmlCookiename1=value1;name2=value2;name3=value3;name4=value4当应从用户终端300发送一个HTTP请求到web服务器202时,基于在浏览器300a中保存的cookie的范围将下述cookie嵌入到HTTP请求的请求信头中(4)GET/index.htmlCookiename3=value3;name4=value4当应从用户终端300发送一个HTTP请求到web服务器203时,基于在浏览器300a中保存的cookie的范围将下述cookie嵌入到HTTP请求的请求信头中(5)GET/index.htmlCookiename4=value4当应从用户终端300发送一个HTTP请求到web服务器204时,由于没有cookie其范围包含web服务器204,因此发送HTTP请求不嵌入cookie。换言之,只发送下述(6)GET/index.html如上所述,通过基于cookie的范围在HTTP请求的请求信头中嵌入对应作为HTTP请求目的地的web服务器200的cookie从用户终端300发送HTTP请求到web服务器200。
接收Set-Cookie信头连同HTTP响应的用户终端300的浏览器300a在该Set-Cookie信头指示的范围内设置cookie。然而,从用户终端300的浏览器300a的观点来看,在浏览器通过反向代理100接收的HTTP响应的来源为反向代理100,而不是web服务器200。一般来说,在从web服务器200返回的Set-Cookie信头中的域和路径参数的值不同于反向代理100上的值,以便接收Set-Cookie信头的浏览器300a忽略Set-Cookie信头或返回带有错误范围内的参数的cookie。
因此,在本实施例中,要进行这种修改以便即使在已经从web服务器200通过反向代理100返回响应到用户终端300的浏览器300a时也允许浏览器300a透明地处理Set-Cookie信头。
在本实施例中,采用修改Set-Cookie信头的技术,其中在Set-Cookie信头中包含的域参数(域相关信息)被删除,而且该域相关信息被嵌入到路径参数中(路径相关信息)。在此技术中,以相反顺序重新整理构成该域相关信息的组成部分以根据Set-Cookie信头分级缩小cookie的范围。例如,”www.abc.com″的组成部分的顺序被修改为”com.abc.www″。此外,将这些组成部分划界的字符“.”被“/”替换,并将该结果信息嵌入到与该路径相关的信息中。
在此实施例中,通过以上述方式转换FQDN(完全资格域名)获得的结果信息被称为“反向FQDN”(反向完全资格域名)。
上面指出,在本实施例中,通过删除Set-Cookie信头中包含的域信息,以与反向FQDN相同的方式处理域信息,以及将结果信息嵌入到路径相关信息中改写Set-Cookie信头。由于Set-Cookie信头是如此改写的,因此在浏览器300a接收的Set-Cookie信头中不存在域参数,这样即使在已经从反向代理100发送了Set-Cookie信头时浏览器300a也不会忽略Set-Cookie信头。于是,在发送下一或后一HTTP请求到cookie的范围时,浏览器300a将该cookie嵌入到HTTP请求中。
图2是根据本实施例的反向代理100的功能框图。图2所示的每个功能框是在程序的控制之下由反向代理100的CPU实现的软件块。
如图2所示,中继HTTP请求和HTTP响应的反向代理100包括web服务器名称获取部分110,URL改写部分120,以及HTTP请求传送部分130。web服务器名称获取部分110识别HTTP请求被发送所至的web服务器200。URL改写部分120改写作为HTTP请求目的地的URL。HTTP请求传送部分130将HTTP请求传送到web服务器200。web服务器名称获取部分110,URL改写部分120,以及HTTP请求传送部分130构成了用于将HTTP请求传送到相应的web服务器200的HTTP请求传送装置。
在本实施例中,从用户终端300发送并且被请求传送装置传送的HTTP请求以下述格式寻址http//<reverseproxy>/<prefix>/<path name of web server>
换言之,HTTP请求只通过反向代理100传送到web服务器200。
在本实施例中,反向代理100还包括Set-Cookie信头改写部分140,链路/位置信头改写部分150以及HTTP响应发送部分160。Set-Cookie信头改写部分140将从web服务器200返回的HTTP响应中包含的Set-Cookie信头改写为预定格式。链路/位置信头部分150改写HTTP响应中包含的链路和位置信头。HTTP响应发送部分160将HTTP响应发送到作为由Set-Cookie信头改写部分140和链路/位置信头改写部分150改写的HTTP响应的目的地的用户终端300。Set-Cookie信头改写部分140,链路/位置信头改写部分150以及HTTP响应发送部分160构成了用于传送HTTP响应到相应用户终端300的HTTP响应传送装置。
Web服务器名称获取部分110从HTTP请求的“前缀”部分的描述中识别该HTTP请求被发送所至的web服务器200。在本实施例中,由于用反向FQDN描述的与web服务器域相关的信息以后面将描述的方式被输入到HTTP请求的“前缀”部分,因此,直接从反向FQDN中获取web服务器名。接着,web服务器名称获取部分110获得作为HTTP请求的目的地的web服务器名并将该HTTP请求发送到URL改写部分120。
URL改写部分120改写作为HTTP请求目的地的URL以指定在web服务器200的URL中发送HTTP请求的路径。URL改写部分120从发送的HTTP请求中删除该“前缀”部分,并将web服务器200的原URL描述为HTTP请求的目的地。换言之,URL改写部分120修改与反向FQDN相关的信息的组成部分的顺序,用(“.”)替换将域相关信息的字符串或组成部分划界的字符(“/”)。例如,如果在HTTP请求中存在“com/abc/www”作为域相关信息,则该域相关信息将被改写为web服务器200的原域名“www.abc.com”。接着,URL改写部分120将路径相关信息添加到域名中以生成web服务器200的URL作为HTTP请求的目的地,例如“http∥www.abc.com/path1/index.htm1”,并将该HTTP请求发送到HTTP请求传送部分130。
HTTP请求传送部分130将改写的HTTP请求(2)传送到所识别的web服务器200的给定URL,对此改写的HTTP请求,Web服务器名称获取部分110已识别该web服务器名作为目的地,而且URL改写部分120改写目的地URL。
接收了由反向代理100传送的HTTP请求的web服务器200基于该HTTP请求返回HTTP响应到发送该HTTP请求的用户终端300。反向代理100中继该HTTP响应。
Set-Cookie信头改写部分140改写从web服务器200返回的HTTP响应中包含的Set-Cookie信头。下面将利用图3所示的例子描述Set-Cookie信头改写部分140改写coolie的转换规则。
图3是在Set-Cookie信头改写部分140中改写Set-Cookie信头的规则简图。换言之,图3示意了用于删除Set-Cookie信头中包含的域参数以及转换路径参数的转换规则。在此将描述在4种情形下,即情形1~情形4,分别如何转换Set-Cookie信头中包含的参数。在下述的转换规则例子中,从图2所示的web服务器200返回的HTTP响应(3)中包含的Set-Cookie信头被表示为Set-Cookie信头(3),而根据本实施例的转换规则由Set-Cookie信头改写部分140改写的HTTP响应中包含的Set-Cookie信头则被表示为Set-Cookie信头(4)。
情形1domain=<web server name>;path=/换言之,当返回Set-Cookie信头的web服务器200的FQDN为所述参数的值,而且web服务器200的路径为由“/”指示的web服务器的根目录的路径时,Web服务器200返回下述Set-Cookie信头(3)Set-Cookiename1=value1;domain=www.abc.com;path=/接着,反向代理100的Set-Cookie信头改写部分140将其转换为下述Set-Cookie信头(4)Set-Cookiename1=value1;path=/com/abc/www/_/根据情形1所示的转换规则,从Set-Cookie信头中删除域参数“domain=www.abc.com”。接着,以反向顺序重新整理该域参数的组成部分,而且分界符被“/”替换以生成反向FQDN。最后,所生成的反向FQDN“/com/abc/www/”被嵌入到路径参数中,其中在路径参数中指示web服务器200域的部分和指示web服务器200原路径的部分之间插入“_”。由此,Set-Cookie信头被转换以生成一个新的路径参数。应指出,尽管在该路径参数中使用了分界符“_”,但如果用任何其它字符替换也不存在什么问题,这种字符不能用于主机名但可用于指定URL。
情形2domain=<domain name of web server>;path=/换言之,当返回Set-Cookie信头的web服务器200的域取域参数的值(例如,除去”www”的”abc.com”),而且路径为“/”时,Web服务器200返回下述Set-Cookie信头(3)Set-Cookiename1=value1;domain=abc.com;path=/接着,Set-Cookie信头改写部分140将其转换为下述Set-Cookie信头(4)Set-Cookiename1=value1;path=/com/abc/根据情形2所示的转换规则,从Set-Cookie信头中删除域参数“domain=abc.com”。接着,以反向顺序重新整理该域参数的组成部分,而且分界符被“/”替换以生成“com/abc”。最后,所生成的“/com/abc”被嵌入到路径参数中以生成上述的Set-Cookie信头。
情形3domain=<web server name>;path!=/
换言之,当返回Set-Cookie信头的web服务器200的FQDN取域参数的值,而且路径不是“/”时,web服务器200返回下述Set-Cookie信头(3)Set-Cookiename1=value1;domain=ww.abc.com;path=/path1/接着,Set-Cookie信头改写部分140将其转换为下述Set-Cookie信头(4)Set-Cookiename1=value1;path=/com/abc/www/_/path1根据情形3所示的转换规则,从Set-Cookie信头中删除域参数“domain=www.abc.com”。接着,以反向顺序重新整理该域参数的组成部分,而且分界符被“/”替换以生成“/com/abc/www”。最后,从“com/abc/www”以及路径参数的初值“/path1/”中创建一个新的路径参数值“com/abc/www/_/path1”。
情形4domain=<domain name of web server>;path!=/换言之,这是返回Set-Cookie信头的web服务器200的域取域参数的值,而且路径不是“/”的情形。本实施例并不支持这种情形,但这种情形不太可能发生,因为这意味着在多个web服务器存在同一个路径。
链路/位置信头改写部分150改写在HTTP响应中链路和位置信头的内容。换言之,其如下改写HTTP响应中链路和位置信头的内容,以显示响应HTTP请求生成的HTTP响应已经通过反向代理100被发送http∥<reverseproxy>/<RFQDN>/_/...,其中<RFQDN>是反向FQDN。
在Set-Cookie信头改写部分140和链路/位置信头改写部分150改写的HTTP响应被发送到HTTP响应发送部分160。下面将参考图8-10详细描述在链路/位置信头改写部分改写的HTTP响应的数据。
HTTP响应发送部分160发送包含带有经改写、反向FQDN的Set-Cookie信头的HTTP响应(4)到发出该HTTP请求的用户终端300。
当接收到该HTTP响应时,用户终端300的浏览器300a在其窗口上显示在该HTTP请求中请求的内容。此外,根据该HTTP响应中包含的Set-Cookie在浏览器300a中设置一个cookie。
接着,当发送下一或后一HTTP请求到该cookie的范围内的web服务器时,浏览器将该cookie嵌入到该HTTP请求的请求信头中。下面利用图6描述发送请求信头中嵌入该cookie的下一或后一HTTP请求的例子。
图4是在根据本实施例的网络系统中的数据流简图。
如图4所示,假设例如,该网络系统由多个web服务器,即,web服务器201(主机名”www.abc.com”)、web服务器202(主机名”www2.abc.com”),web服务器203(主机名”www3.sub.abc.com”)及web服务器204(主机名”www.xyz.com”),反向代理100(主机名”rproxy.ijk.com”)以及用户终端300构成。
下面描述在图4所示的网络系统中,在对从用户终端300发出通过反向代理100的各个HTTP请求的HTTP响应中包含的Set-Cookie信头。
假设web服务器201(”www.abc.com”)返回包含下述两个Set-Cookie信头的HTTP响应以在用户终端300上设置cookie(A1)Set-Cookiename1=value1;domain=ww.abc.com;path=/Set-Cookiename2=value2;domain=abc.com;path=/另外假设web服务器203(”www3.sub.abc.com”)返回包含下述Set-Cookie信头的HTTP响应以在用户终端300上设置cookie(C1)Set-Cookiename3=value3;domain=sub.abc.com;path=/图5示意了分别对应”name1”、”name2”和”name3”的cookie的范围内的web服务器200。如图5所示,与”name1”相关的cookie的范围包括web服务器201(”www.abc.com”)。与”name2”相关的cookie的范围包括web服务器201(”www.abc.com”),web服务器202(”www2.abc.com”)和web服务器203(”www3.sub.abc.com”)。与”name3”相关的cookie的范围包括web服务器203(”www3.sub.abc.com”)。
这些Set-Cookie信头(A1)和(C1)被反向代理100的Set-Cookie信头改写部分140如下转换其中一个Set-Cookie信头(A1),即,(A1)Set-Cookiename1=value1;domain=www.abc.com;path=/被上述情形1的转换规则转换为下述(A2)Set-Cookiename1=value1;path=/com/abc/www/_/另一Set-Cookie信头(A1),即,(A1)Set-Cookiename2=value2;domain=abc.com;path=/被上述情形2的转换规则转换为下述(A2)Set-Cookiename2=value2;path=/com/abc/此外,Set-Cookie信头(C1),即,(C1)Set-Cookiename1=value1;domain=www.abc.com;path=/被上述情形2的转换规则转换为下述(C2)Set-Cookiename3=value3;path=/com/abc/sub/因此,当访问每个web服务器时,用户终端300发送嵌入了图6所示的的cookie的HTTP请求。
换言之,当用户终端300发送HTTP请求到web服务器201时,包含对应图5所示的cookie范围的所有匹配cookie的名称和数值对的行被嵌入到HTTP请求的请求信头中,并且发送下述HTTP请求(A3)作为结果http∥rproxy.ijk.com/com/abc/www/_/...
Cookiename1=value1;name2=value2当用户终端300发送HTTP请求到web服务器202时,包含对应图5所示的cookie范围的匹配cookie的名称和数值对的行被嵌入到HTTP请求的请求信头中,并且发送下述HTTP请求(B3)作为结果http∥rproxy.ijk.com/com/abc/www2/_/...
Cookiename2=value2当用户终端300发送HTTP请求到web服务器203时,包含对应图5所示的cookie范围的所有匹配cookie的名称和数值对的行被嵌入到HTTP请求的请求信头中,并且发送下述HTTP请求(C3)作为结果http∥rproxy.ijk.com/com/abc/sub/www3/_/...
Cookienam2=value2;name3=value3当用户终端300发送HTTP请求到web服务器204时,由于没有cookie对应该HTTP请求,因此发送下述HTTP请求(D3)不带任何cookiehttp∥rproxy.ijk.com/com/abc/xyz/www/_/...
如上所述,在下一或后一HTTP请求中包含的cookie匹配图5所示的cookie范围内的web服务器200,由此能通过反向代理100透明地处理cookie。
这些HTTP请求(A3)-(C3)在web服务器名称获取部分110和URL改写部分120经过预定处理,并被转换为HTTP请求(A4)-(C4)。接着HTTP请求传送部分130分别将HTTP请求(A4)传送到web服务器201,将HTTP请求(B4)传送到web服务器202,以及将HTTP请求(C4)传送到web服务器203。
类似地,HTTP请求传送部分130将HTTP请求(D3)传送到web服务器204作为HTTP请求(D4)。
一般来说,端口80用于转发常规HTTP请求。然而在本实施例中,如果需要明确指定在web服务器200上非缺省号的端口号,则可如下指定端口号http∥<reverseproxy>/<RFQDN>/-<port>/<path name of webserver>
因此,在”<port>”部分可指定web服务器200上的端口号,以便即使在一个异常端口用作用于HTTP请求的web服务器200上的端口时,也可发送HTTP请求到web服务器200。
此外,在本实施例中,”<RFQDN>”用作<prefix>,但即使添加一个固定字符串,例如”xxx/”作为<RFQDN>的前缀,也可透明地处理cookie。例如,假设浏览器300a从web服务器201(名称为”www.abc.com”)通过反向代理100访问名为”/index.html”的网页。在此情况下,发送下述HTTP请求http∥<reverseproxy>/xxx/com/abc/www/_/index.html另外假设web服务器201返回下述Set-Cookie信头Set-Cookiename1=value1;domain=abc.com;path=/在此情况下,反向代理100将该Set-Cookie信头转换为下述Set-Cookiename1=value1;path=/xxx/com/abc/接着反向代理100将经过转换的Set-Cookie信头发送到用户终端300。
在本实施例中,”www.abc.com”被转换为”com/abc/www”。然而,一旦指定了域参数,只有顶级域名,如”.com”、”.net”或”.co.jp”,无法被指配为域参数。换言之,必须从低于顶级域一级的子域指定域参数,如”abc.com”、”abc.net”或”abc.co.jp”。因此,通过组合指定域参数所必需的最小域名集合可如下描述到达反向代理100的访问路径http∥<reverseproxy>/abc-com/www/_/index.html(对于图4中的A3),以及http∥<reverseproxy>/abc-com/sub/www3//index.html(对于图4中的C3)。
接收这些HTTP请求的反向代理100读出在分界符””之前的每个字符串,并分别解释目的地web服务器名为”www.abc.com”和″www3.sub.abc.com”。接着反向代理100发送给相应的web服务器200下述HTTP请求
http∥www.abc.com/index.html(对于图4中的A4),以及http∥www3.sub.abc.com/index.html(对于图4中的C4)。
为响应这些HTTP请求,web服务器200返回下述Set-Cookie信头,例如Set-Cookieid1=001;domian=www.abc.com;path=/;...(对于图4中的A1)Set-Cookieid1=001;domian=sub.abc.com;path=/;...(对于图4中的C1)反向代理100如下转换这些Set-Cookie信头Set-Cookieid1=001;path=/abc-com/www/_/;...(对于图4中的A2)Set-Cookieid1=001;path=/abc-com/sub/;...(对于图4中的C2)。
因此,即使以上述方式描述<prefix>,也能透明地处理cookie。
在利用图4描述的实例中,在从反向代理100返回的Set-Cookie信头中没有指定域参数。在这种情况下,Set-Cookie信头描绘已经发送了HTTP响应的服务器。因此,在图4所示的例子中,反向代理100可例如用其自己的服务器名替换Set-Cookie信头中的域参数,以如下明确指定反向代理100的服务器名Set-Cookiename1=value1;path=/com/abc/www/_/ ;domain=<reverse proxy>
图7是在根据本实施例的反向代理100中的处理流程图。参考图7所示的流程图描述反向代理100对从用户终端300发送的HTTP请求和从web服务器200返回的HTTP响应执行的处理。图8-10示意了在下述的每个处理步骤使用的数据(HTTP响应)。
当用户终端300发送嵌入了cookie的HTTP请求时,在反向代理100接收的HTTP请求被传递到web服务器名称获取部分110(步骤701)。下面假设在步骤701接收的HTTP请求为如下(Req1)GET/com/abc/www/_/index.html HTTP/1.1
web服务器名称获取部分110基于在步骤701接收的HTTP请求中的前缀获取web服务器的名称(步骤702)。由此识别作为HTTP请求目的地的web服务器200。在步骤702已经识别了目的地web服务器名的HTTP请求被发送到URL改写部分120。URL改写部分120基于在步骤702通过web服务器名称获取部分110获取的信息改写URL(步骤703)。换言之,URL改写部分120在步骤703获取作为HTTP请求目的地的web服务器200的原URL和路径”/www.abc.com/index/html”。已经识别了作为HTTP请求目的地的web服务器200(”www.abc.com”)以及web服务器200的URL(指示”www.abc.com”的根目录的”index.html”)的HTTP请求,即,(Req2)GET/index.html HTTP/1.1被发送到HTTP请求传送部分130。HTTP请求传送部分130传送该HTTP请求到在步骤702识别的web服务器200(步骤704)。
接收该HTTP请求的web服务器200发送给发出该HTTP请求的用户终端300针对从反向代理100传送的HTTP请求的HTTP响应。在该HTTP响应中嵌入一个cookie信头以通知在未来HTTP请求中的用户状态,并返回嵌入了cookie信头的HTTP响应。来自web服务器200的HTTP响应通过反向代理100被返回用户终端。换言之,从web服务器200返回的HTTP响应在反向代理100被接收,并被传递到Set-Cookie信头改写部分140(步骤705)。
图8是在步骤705接收的HTTP响应的实例。如图8所示,这个HTTP响应包括下述Set-Cookie信头Set-Cookiesessionid=001;path=/;domain=abc.comSet-Cookie信头包括对应识别用户的ID的”sessionid=001”,识别浏览器300a返回cookie所至的web服务器的URL(路径)的”path=/”,以及识别作为HTTP响应目的地的web服务器的域的”domain=abc.com”。除了Set-Cookie信头的上述信息,HTTP响应还包括从web服务器200返回的各种信头信息。
反向代理100一接收到该HTTP响应,Set-Cookie信头改写部分140就确定在该HTTP响应中是否存在一个Set-Cookie信头(步骤706)。当在步骤706确定在该HTTP响应中存在Set-Cookie信头时,Set-Cookie信头改写部分140改写该Set-Cookie信头(步骤707)。这个Set-Cookie信头是根据图3所示的转换规则改写的。换言之,Set-Cookie信头改写部分140删除域参数,以相反顺序重新整理该域参数的组成部分,并用”/”替换分界符”.”。接着,Set-Cookie信头改写部分140将改写的信息嵌入到Set-Cookie信头的路径参数中。当Set-Cookie信头改写部分140在步骤706确定在该HTTP响应中不存在Set-Cookie信头时,省略步骤707。
图9是带有在步骤707改写的Set-Cookie信头的HTTP响应的实例。如图9所示,在步骤707改写的Set-Cookie信头为下述Set-Cookiesessionid=001;path=/com/abc/图9示意已经根据图3所示的转换规则改写了上述Set-Cookie。
带有在步骤707改写的Set-Cookie信头针对反向FQDN的HTTP响应被从Set-Cookie信头改写部分140发送到链路/位置信头改写部分150。接收该HTTP响应的链路/位置信头改写部分150改写内容中的链路和位置信头(步骤708)。
图10是带有改写的链路的HTTP响应的实例。下述是图8和9所示的链路目的地指定部分“/menu1.html”“/menu2.html”“/menu3.html”如图10所示,这些链路目的地指定部分在步骤708被改写为添加了反向FQDN的下述绝对路径“/com/abc/www/_/menu1.html”“/com/abc/www/_/menu2.html”
“/com/abc/www/_/menu3.html”包含以浏览器可识别格式改写的Set-Cookie信头的HTTP响应被从HTTP响应发送部分160发送到已经发送了在步骤701接收的HTTP请求的用户终端300(步骤709)。接着在用户终端300的浏览器上显示基于HTTP响应的内容,以及链接到该HTTP响应的数据和文件,并且在浏览器中保存和存储基于该HTTP响应中的Set-Cookie信头的cookie预定范围。
在本实施例中,反向代理100删除域参数,并发送给用户终端带有以上述方式改写的路径参数的Set-Cookie信头。结果,基于在通过反向代理100返回的HTTP响应中包含的Set-Cookie信头在用户终端300的浏览器300a中设置和保存一个cookie。
接着,当从浏览器300a接收带有cookie信头的下一或后一HTTP请求时,反向代理100按原样将该cookie信头传送给对应的一个web服务器200。这导致只发送cookie给在Set-Cookie信头中匹配web服务器200指定的域和路径的范围。
如上所述和根据本发明,可在客户通过反向代理访问服务器的网络系统中透明地处理由服务器设置的cookie。
根据本发明,可提供一个带有Set-Cookie改写能力的反向代理以透明地处理服务器设置的cookie。
权利要求
1.一种网络系统,包括在网络上提供的多个web服务器以及中继外部访问所述多个web服务器的反向代理,其中每个所述web服务器响应来自与所述网络连接的某个终端的请求,以返回所述终端一个包含用于维护所述终端状态的信息的响应,以及所述反向代理将包含在所述响应中用于维护所述终端状态的信息转换为所述终端可识别的格式,作为所述网络的配置,并返回具有所述转换的信息的响应。
2.根据权利要求1的网络系统,其中所述反向代理删除在用于维护所述终端状态的信息中包含的指定所述web服务器的域的域参数,并将所述域参数嵌入到在所述信息中包含的所述web服务器的路径参数中。
3.根据权利要求2的网络系统,其中所述反向代理以相反顺序重新整理所述域参数的组成部分,并将所述重新整理的域参数嵌入到所述路径参数中。
4.一种从web服务器中继数据到用户终端的反向代理,包括信头改写部分,用于接收从web服务器返回到所述用户终端的数据,并将在所述数据中包含的域改写为所述用户终端可识别的格式;以及数据发送部分,用于向所述用户终端发送由所述信头改写部分改写的数据。
5.根据权利要求4的反向代理,其中所述信头改写部分以相反顺序重新整理在所述数据中包含的对所述域的说明,以生成一个包含以相反顺序重新整理的域的说明的路径。
6.根据权利要求4的反向代理,还包括链路/位置改写部分,用于依照包含由所述信头改写部分改写的域的说明的路径,改写在所述数据中包含的链路和位置的域及路径。
7.根据权利要求4的反向代理,还包括web服务器名称获取部分,用于接收从所述用户终端发送到web服务器的请求,并基于所述请求从所述网络上的多个服务器中识别所述web服务器,作为所述请求的访问目的地;URL改写部分,用于基于所述请求将在所述请求中描述的访问路径改写为所述web服务器的原始路径;以及请求传送部分,用于将所述请求传送到由所述请求指示的web服务器。
8.一种从用户终端中继请求到web服务器的反向代理,包括web服务器名称获取部分,用于基于通过转换对所述接收的请求的说明所获得的信息,从网络上的多个服务器中识别所述请求被发送所到的web服务器;URL改写部分,用于基于由所述web服务器名称获取部分识别的web服务器,将所述请求的访问目的地改写为所述web服务器的URL;以及请求传送部分,用于将所述请求传送到所述web服务器的所述URL。
9.一种在终端和服务器之间中继HTTP请求的传输以及返回HTTP响应的计算机设备,包括HTTP请求传送装置,用于中继具有从所述终端的浏览器发送的cookie的HTTP响应,以将具有所述cookie的HTTP请求传送到作为所述HTTP请求目的地的服务器;以及HTTP响应传送装置,用于响应所述HTTP请求接收从所述服务器返回的HTTP响应,删除在Set-Cookie信头中描述的域,以相反顺序重新整理所述域的组成部分,将所述重新整理的组成部分嵌入到在所述Set-Cookie信头中描述的路径中,并将具有所述Set-Cookie信头的HTTP响应传送到所述终端。
10.根据权利要求9的计算机设备,其中所述HTTP请求传送装置指定所述服务器上的通信端口的端口号与所述服务器的域,并将所述HTTP请求传送到所述服务器。
11.根据权利要求9的计算机设备,其中所述HTTP响应传送装置根据所述HTTP响应向Set-Cookie信头添加一个预定的固定字符串,并将所述带有Set-Cookie信头的HTTP响应传送到所述终端。
12.根据权利要求9的计算机设备,其中所述HTTP响应传送装置在以相反顺序重新整理组成部分时,编辑用于识别所述域所必需的组成部分,并将所述HTTP响应传送到所述终端。
13.根据权利要求9的计算机设备,其中所述HTTP响应传送装置用其自己的服务器名称替换Set-Cookie信头中所述服务器的所述域参数,并将所述HTTP响应传送到所述终端。
14.一种用于计算机设备中继在第一计算机设备和第二计算机设备之间交换的数据的数据处理方法,包括步骤接收从所述第一计算机设备发送到所述第二计算机设备的响应;确定所述响应是否包含Set-Cookie信头;在所述响应包含Set-Cookie信头时改写所述Set-Cookie信头,以便基于所述Set-Cookie信头在所述第二计算机设备上设置的cookie将具备所述第二计算机设备可识别的格式;以及发送给所述第二计算机带有所述改写的Set-Cookie信头的响应。
15.一种用于控制计算机设备中继在第一计算机设备和第二计算机设备之间交换的数据、以执行预定的数据处理的程序产品,包括用于接收从所述第一计算机设备发送到所述第二计算机设备的响应的处理;用于在所述响应包含Set-Cookie信头时改写所述Set-Cookie信头,以便基于所述Set-Cookie信头在所述第二计算机设备上设置的cookie将具备所述第二计算机设备可识别的格式的处理;以及用于发送给所述第二计算机设备带有所述改写的Set-Cookie信头的响应的处理。
16.根据权利要求15的程序产品,其中在用于改写Set-Cookie信头的所述处理中,以相反顺序改变在所述响应的所述Set-Cookie信头中包含的域的顺序,而且所述域的分界符被预定字符替换以生成包含以相反顺序重新整理的域的路径。
17.根据权利要求15的程序产品,控制所述计算机设备依照在所述Set-Cookie信头中包含的路径进一步执行处理,以改写在所述响应中包含的链路和位置的域及路径。
18.一种用于控制计算机设备中继在第一计算机设备和第二计算机设备之间交换的数据、以执行预定处理的程序产品,包括用于接收从所述第二计算机设备发送的请求,并基于通过转换对所接收请求的描述所获得的信息,识别所述请求被发送所至的第一计算机设备的处理;用于将所述请求的访问目的地改写为所识别的第一计算机设备的URL的处理;以及用于发送所述请求到所述识别的第一计算机设备的URL的处理。
全文摘要
本发明的目的是在客户通过反向代理访问服务器的网络系统中有效使用服务器设置的cookie。在从web服务器中继数据到用户终端的反向代理100中,从web服务器接收HTTP响应的Set-Cookie信头改写部分140删除在Set-Cookie信头中包含的域参数,以相反顺序重新整理域参数的组成部分,并将经过重新整理的组成部分嵌入到HTTP响应中。由此Set-Cookie信头改写部分140以用户终端可识别的格式改写HTTP响应。链路/位置信头改写部分150以HTTP响应被Set-Cookie信头改写部分140改写的一致格式改写链路和位置的域和路径。HTTP响应发送部分160发送经改写的HTTP响应到用户终端。
文档编号H04L29/06GK1487711SQ03178638
公开日2004年4月7日 申请日期2003年7月18日 优先权日2002年9月3日
发明者高桥弘一 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1