專利名稱:網(wǎng)絡(luò)系統(tǒng)、反向代理、計算機(jī)設(shè)備、數(shù)據(jù)處理方法以及程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種介乎網(wǎng)絡(luò)和外部網(wǎng)絡(luò)上的服務(wù)器其間的反向代理,尤其涉及當(dāng)服務(wù)器設(shè)置cookie時在反向代理上的處理。
背景技術(shù):
反向代理放置在網(wǎng)絡(luò)上的目的是為通過網(wǎng)絡(luò)提供各種服務(wù)的服務(wù)器增強(qiáng)安全性。反向代理是代表服務(wù)器接收和中繼請求的代理服務(wù)器。由于所有用戶都只能通過反向代理訪問這些服務(wù)器,因此不能直接從外部訪問這些服務(wù)器。
在通過反向代理訪問服務(wù)器的情形下,通常采用下述格式來發(fā)送訪問請求(1)http//<reverse proxy>/<prefix>/<path name of webserver>,和(2)http∥<web server>/<path name of web server>,在此,HTTP(超文本傳輸協(xié)議)用作通信協(xié)議。下面描述利用HTTP訪問web服務(wù)器的一個實(shí)例。
如圖12所示,反向代理管理一個定義<prfix>和每個服務(wù)器名之間的對應(yīng)關(guān)系的表格。當(dāng)接收到格式(1)的請求時,反向代理訪問圖12的表格,并以格式(2)發(fā)送請求到對應(yīng)該請求中的<prfix>的web服務(wù)器。
由于HTTP請求是無狀態(tài)的,也就是說,相互獨(dú)立,即使在接收到來自同一個用戶的連續(xù)請求時,web服務(wù)器也認(rèn)為它們是獨(dú)立的請求。因此,引入cookie來維持這些請求之間的用戶狀態(tài)。
web服務(wù)器在用戶的瀏覽器中設(shè)置一個cookie,以便它能以例如下述方式跟蹤用戶行為
當(dāng)對來自用戶的請求返回響應(yīng)時,web服務(wù)器首先如下在該響應(yīng)的信頭中嵌入Set-CookieSet-Cookieid=001從此開始,一個類似下述的cookie被嵌入到來自該用戶的所有請求信頭中Cookieid=001基于這個信息,web服務(wù)器可跟蹤用戶已經(jīng)訪問了哪些頁面。
帶有所述嵌入的Set-Cookie的信頭(下面稱為Set-Cookie信頭)具有下述句法Set-Cookie<name>=<value>;domain=<domain>;path=<path>;等等。
接收該Set-Cookie信頭的瀏覽器根據(jù)對域和路徑的詳細(xì)說明限制返回的cookie的范圍。換言之,只有在由域參數(shù)指定的范圍內(nèi)的web服務(wù)器中訪問由路徑參數(shù)指定的目錄和子目錄的情況下才返回cookie。
然而,在適當(dāng)位置放置這種反向代理的網(wǎng)絡(luò)系統(tǒng)中,將出現(xiàn)下述問題。即,當(dāng)對從反向代理發(fā)送到服務(wù)器的請求的響應(yīng)(例如,對格式(2)請求的響應(yīng))包括Set-Cookie信頭時,如果反向代理返回該響應(yīng)就好象它是針對發(fā)出該請求的瀏覽器(用戶終端),則瀏覽器無法通過定義正確接受該Set-Cookie。
其原因是,盡管Set-Cookie的范圍是由指定路徑的參數(shù)確定的,但服務(wù)器的原域和路徑不同于通過反向代理的域和路徑。例如,當(dāng)web服務(wù)器通過為域參數(shù)設(shè)置其自身所屬的域的值設(shè)置Set-Cookie時,如果瀏覽器可識別的反向代理并不存在于該Set-Cookie指定的域中,瀏覽器將忽略該Set-Cookie。
發(fā)明內(nèi)容
因此本發(fā)明的目的是在客戶通過反向代理訪問服務(wù)器的網(wǎng)絡(luò)系統(tǒng)中透明地處理服務(wù)器所設(shè)置的cookie。
本發(fā)明的另一目的是為有效使用由服務(wù)器設(shè)置的cookie,提供一種帶有Set-Cookie改寫能力的反向代理。
為達(dá)到上述目的,本發(fā)明是通過下述網(wǎng)絡(luò)系統(tǒng)實(shí)現(xiàn)的,即,所述網(wǎng)絡(luò)系統(tǒng)包含在網(wǎng)絡(luò)中提供的多個web服務(wù)器,以及中繼外部訪問到這多個web服務(wù)器的反向代理。在所述網(wǎng)絡(luò)系統(tǒng)中,每個web服務(wù)器響應(yīng)來自與該網(wǎng)絡(luò)連接的某個終端的請求,以返回該終端一個包含用于維持所述終端狀態(tài)的信息的響應(yīng)。反向代理將包含在該響應(yīng)中用于維持該終端狀態(tài)的信息轉(zhuǎn)換為該終端可識別的格式作為該網(wǎng)絡(luò)的配置,并返回帶有該轉(zhuǎn)換信息的響應(yīng)。換言之,反向代理刪除在用于維護(hù)終端狀態(tài)的信息中包含的指定web服務(wù)器的域的域參數(shù),以相反順序重新整理域參數(shù)的組成部分,并將經(jīng)過重新整理的域參數(shù)嵌入到在所述信息中包含的web服務(wù)器的路徑參數(shù)中。
本發(fā)明還可通過具有下述功能配置的反向代理實(shí)現(xiàn)。即,從web服務(wù)器中繼數(shù)據(jù)到用戶終端的反向代理包括信頭改寫部分,用于接收從web服務(wù)器返回到用戶終端的數(shù)據(jù),并將在所述數(shù)據(jù)中包含的Set-Cookie信頭的域和路徑的說明改寫為用戶終端可識別的格式;以及數(shù)據(jù)發(fā)送部分,用于發(fā)送給用戶終端由信頭改寫部分改寫的數(shù)據(jù)。反向代理還可包括鏈路/位置改寫部分,用于依照包含由信頭改寫部分改寫的域的說明的路徑,改寫在所述數(shù)據(jù)中包含的鏈路和位置的域及路徑。
此外,本發(fā)明是通過具有下述功能配置的反向代理實(shí)現(xiàn)的。即,從用戶終端中繼請求到web服務(wù)器的反向代理包括web服務(wù)器名稱獲取部分,用于基于通過轉(zhuǎn)換所接收請求的說明所獲得的信息(域相關(guān)信息),從網(wǎng)絡(luò)上的多個服務(wù)器中識別所述請求將被發(fā)送到的web服務(wù)器;URL改寫部分,用于基于由web服務(wù)器名稱獲取部分識別的web服務(wù)器,將所述請求的訪問目的地改寫為所述web服務(wù)器的URL;以及請求傳送部分,用于將所述請求傳送到所述web服務(wù)器的URL。
此外,本發(fā)明可提供下述計算機(jī)設(shè)備,即,在終端和服務(wù)器之間中繼HTTP請求的傳輸和HTTP響應(yīng)的返回的計算機(jī)設(shè)備。所述計算機(jī)設(shè)備包括HTTP請求傳送裝置,用于中繼帶有從終端的瀏覽器發(fā)送的cookie的HTTP請求,以將其傳送到作為所述HTTP請求的目的地的服務(wù)器;以及HTTP響應(yīng)傳送裝置,用于響應(yīng)所述HTTP請求接收從所述服務(wù)器返回的HTTP響應(yīng),刪除在Set-Cookie信頭中描述的域,以相反順序重新整理所述域的組成部分,將所述重新整理的組成部分嵌入到在所述Set-Cookie信頭中描述的路徑中,并將帶有所述Set-Cookie信頭的HTTP響應(yīng)傳送到所述終端。在此配置中,當(dāng)在web服務(wù)器上使用非缺省端口的端口時,HTTP請求傳送裝置指定在瀏覽器到反向代理的訪問路徑上web服務(wù)器的端口號以訪問web服務(wù)器。HTTP響應(yīng)傳送裝置根據(jù)該HTTP響應(yīng)向Set-Cookie信頭添加一個預(yù)定的固定字符串,以將帶有所述Set-Cookie信頭的HTTP響應(yīng)傳送到終端。此外,HTTP響應(yīng)傳送裝置可用其自己的服務(wù)器名替換Set-Cookie信頭中服務(wù)器的域參數(shù),以將HTTP響應(yīng)傳送到終端。
此外,本發(fā)明可提供下述數(shù)據(jù)處理方法。即,用于計算機(jī)設(shè)備中繼在第一計算機(jī)設(shè)備和第二計算機(jī)設(shè)備之間交換的數(shù)據(jù)的數(shù)據(jù)處理方法,包括步驟接收從第一計算機(jī)設(shè)備發(fā)送到第二計算機(jī)設(shè)備的響應(yīng);確定所述響應(yīng)是否包含Set-Cookie信頭;在所述響應(yīng)包含Set-Cookie信頭時改寫Set-Cookie信頭,以便基于所述Set-Cookie信頭在第二計算機(jī)設(shè)備上設(shè)置的cookie將具備第二計算機(jī)設(shè)備可識別的格式;以及發(fā)送給第二計算機(jī)設(shè)備帶有所述改寫的Set-Cookie信頭的響應(yīng)。
用于計算機(jī)設(shè)備中繼在第一計算機(jī)設(shè)備和第二計算機(jī)設(shè)備之間交換的數(shù)據(jù)的數(shù)據(jù)處理方法,還可包括步驟接收從第二計算機(jī)設(shè)備發(fā)送的請求;基于通過轉(zhuǎn)換請求消息獲得的信息識別發(fā)送請求的第一計算機(jī)設(shè)備;改寫所述請求的訪問目的地為第一計算機(jī)設(shè)備的URL;以及發(fā)送所述請求到識別的第一計算機(jī)設(shè)備的URL。
另外,本發(fā)明可通過控制計算機(jī)執(zhí)行上述方法的每個步驟以執(zhí)行數(shù)據(jù)處理或每個功能部分執(zhí)行的處理的程序?qū)崿F(xiàn)。該程序也可以存儲介質(zhì)的形式分配,如磁盤,光盤,半導(dǎo)體存儲器,或任何其它記錄介質(zhì),或通過網(wǎng)絡(luò)傳送。
圖1是根據(jù)一個實(shí)施例的網(wǎng)絡(luò)系統(tǒng)的配置簡圖。
圖2是根據(jù)本實(shí)施例的反向代理的功能框圖。
圖3是根據(jù)本實(shí)施例的Set-Cookie信頭改寫部分的轉(zhuǎn)換規(guī)則。
圖4是在本實(shí)施例的網(wǎng)絡(luò)系統(tǒng)中的數(shù)據(jù)流簡圖。
圖5是根據(jù)本實(shí)施例的轉(zhuǎn)換規(guī)則轉(zhuǎn)換的cookie范圍內(nèi)的web服務(wù)器。
圖6是帶有對應(yīng)相應(yīng)情形的反向FQDN的Set-Cookie信頭實(shí)例。
圖7是在根據(jù)本實(shí)施例的反向代理中的處理流程圖。
圖8是在根據(jù)本實(shí)施例的反向代理中接收的響應(yīng)數(shù)據(jù)實(shí)例。
圖9是帶有由根據(jù)本實(shí)施例的反向代理改寫的Set-Cookie信頭的響應(yīng)數(shù)據(jù)實(shí)例。
圖10是從根據(jù)本實(shí)施例的反向代理發(fā)送的響應(yīng)數(shù)據(jù)實(shí)例。
圖11是由從web服務(wù)器發(fā)送的Set-Cookie信頭確定的cookie范圍的簡圖,以及將被發(fā)送到作為cookie范圍的相應(yīng)一個web服務(wù)器的HTTP請求和cookie實(shí)例。
圖12是在反向代理中管理的表格。
具體實(shí)施例方式
現(xiàn)在基于在附圖中示意的實(shí)施例詳細(xì)描述本發(fā)明。
圖1是根據(jù)本實(shí)施例的網(wǎng)絡(luò)系統(tǒng)的配置簡圖。
如圖1所示,根據(jù)本實(shí)施例的網(wǎng)絡(luò)系統(tǒng)包括web服務(wù)器200,反向代理100和用戶終端300。web服務(wù)器200響應(yīng)來自外部的請求提供內(nèi)容并返cookie。反向代理100中繼這些請求到web服務(wù)器200,并從web服務(wù)器200通過諸如LAN網(wǎng)絡(luò)的網(wǎng)絡(luò)400響應(yīng)這些請求。用戶終端300通過諸如因特網(wǎng)的網(wǎng)絡(luò)500與反向代理100相連,以發(fā)送這些請求到web服務(wù)器200并從web服務(wù)器200接收響應(yīng)。
圖中示意,在根據(jù)本實(shí)施例的網(wǎng)絡(luò)系統(tǒng)中,web服務(wù)器200為具有互不相同的域的多個web服務(wù)器201,202,...。web服務(wù)器可由分別具有瀏覽器301a,302a,...的多個終端301,302,...中的任何一個訪問。下面假設(shè)即使在訪問任何一個web服務(wù)器200的終端在物理上為同一個終端時,根據(jù)用戶登錄名,它們也被認(rèn)為是不同終端。
下面通過考慮將HTTP用作在web服務(wù)器200和用戶終端300之間發(fā)送和接收HTTP請求和HTTP響應(yīng)的通信協(xié)議來描述本實(shí)施例。
圖1所示的每個web服務(wù)器200可以是具備足以承受來自外部的訪問負(fù)荷能力的計算機(jī)。web服務(wù)器200返回數(shù)據(jù)或文件(HTTP響應(yīng))以響應(yīng)來自每個用戶終端300的HTTP請求提供內(nèi)容。web服務(wù)器200在返回HTTP響應(yīng)到用戶終端300之前在HTTP響應(yīng)中包含Set-Cookie信頭。從web服務(wù)器200返回的HTTP響應(yīng)首先被在web服務(wù)器200和用戶終端300之間提供的反向代理100接收。在本實(shí)施例中,帶有由web服務(wù)器200嵌入的Set-Cookie信頭的HTTP響應(yīng)被反向代理100轉(zhuǎn)換為預(yù)定格式。
反向代理100可以是具備在web服務(wù)器200和用戶終端300之間中繼HTTP請求和HTTP響應(yīng)的網(wǎng)絡(luò)能力的計算機(jī)。反向代理100中繼來自用戶終端300的HTTP請求以將其傳送到由HTTP請求指定的web服務(wù)器200。此外,反向代理100中繼從web服務(wù)器200返回的HTTP響應(yīng)以響應(yīng)所傳送的HTTP請求。
在本實(shí)施例中,反向代理100從web服務(wù)器200接收包含Set-Cookie信頭的HTTP響應(yīng),并將該HTTP響應(yīng)中的Set-Cookie信頭轉(zhuǎn)換為預(yù)定格式。此外,反向代理100改寫在HTTP響應(yīng)中包含的鏈路和位置信頭,并發(fā)送給發(fā)出該HTTP請求的用戶終端300帶有改寫的Set-Cookie信頭和鏈路位置信頭的HTTP響應(yīng)。后面將詳細(xì)描述由反向代理100實(shí)現(xiàn)的這些功能。
另一方面,每個用戶終端300可以是個人計算機(jī)或工作站。用戶終端300具有諸如鍵盤和鼠標(biāo)的操作設(shè)備,以及諸如監(jiān)視器的顯示設(shè)備。用戶終端300還裝有在程序控制之下工作的瀏覽器300a。瀏覽器300a不僅根據(jù)操作設(shè)備的操作在顯示設(shè)備上顯示瀏覽器窗口(屏幕),而且管理由不同web服務(wù)器200設(shè)置的cookie。接著,當(dāng)操作用戶終端300的用戶在此瀏覽器窗口執(zhí)行預(yù)定操作時,瀏覽器300a發(fā)送給聯(lián)網(wǎng)的其中一個web服務(wù)器200一個HTTP請求。web服務(wù)器200響應(yīng)該HTTP請求返回一個HTTP響應(yīng),用戶終端允許瀏覽器300a基于從web服務(wù)器200返回的HTTP響應(yīng)在其瀏覽器窗口上顯示內(nèi)容。
此外,基于從web服務(wù)器200返回的在HTTP響應(yīng)中嵌入的Set-C00kie信頭,在瀏覽器300a設(shè)置一個cookie。瀏覽器300a將該cookie保存或存儲在用戶終端300上,以便在發(fā)送HTTP請求之前將該cookie將嵌入到對該cookie范圍內(nèi)的web服務(wù)器200的下一或后一HTTP請求中。接收包含該cookie的HTTP請求的web服務(wù)器200保存該HTTP請求與從同一用戶終端300發(fā)送的后續(xù)HTTP請求之間的相互關(guān)系以維持用戶終端300的狀態(tài)。
下面將基于從用戶終端300發(fā)送的HTTP請求,集中于在從web服務(wù)器200返回的HTTP響應(yīng)中包含的Set-Cookie信頭,描述反向代理100如何工作。
域和路徑參數(shù)是在HTTP響應(yīng)中包含的每個Set-C00kie信頭中描述的?;谟嘘P(guān)域和路徑參數(shù)的信息,在用戶終端300的瀏覽器300a設(shè)置cookie的范圍。參考圖11,描述在從web服務(wù)器200返回到用戶終端300的HTTP響應(yīng)中包含的Set-Cookie信頭,以及在從用戶終端300發(fā)送到web服務(wù)器200的HTTP請求的請求信頭中嵌入的cookie。
圖11是由從web服務(wù)器200發(fā)送的Set-Cookie信頭確定的cookie范圍的簡圖,以及帶有發(fā)送到cookie范圍內(nèi)對應(yīng)一個web服務(wù)器200的cookie的HTTP請求實(shí)例。
在所示意的例子中,在網(wǎng)絡(luò)中放置了多個web服務(wù)器200,即,web服務(wù)器201(域”www.sub.abc.com”)、web服務(wù)器202(域”www2.sub.abc.com”)web服務(wù)器203(域”www3.abc.com”)以及web服務(wù)器204(域”www.xyz.com”)。與web服務(wù)器200交換HTTP請求和HTTP響應(yīng)的用戶終端300通過網(wǎng)絡(luò)連接。
web服務(wù)器201根據(jù)來自用戶終端300的HTTP請求返回包含下述Set-Cookie信頭(1)的HTTP響應(yīng)(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設(shè)置和保存cookie?;赟et-Cookie信頭(1)設(shè)置的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所示的例子中,當(dāng)應(yīng)從用戶終端300發(fā)送一個HTTP請求到web服務(wù)器201時,基于在瀏覽器300a中保存的cookie的范圍將下述cookie嵌入到HTTP請求的請求信頭中(2)GET/index.htmlCookiename1=value1;name3=value3;name4=value4當(dāng)應(yīng)從用戶終端300發(fā)送一個HTTP請求到web服務(wù)器201的目錄(”/path1/”)時,基于在瀏覽器300a中保存的cookie的范圍將下述cookie嵌入到HTTP請求的請求信頭中(3)GET/paht1/index.htmlCookiename1=value1;name2=value2;name3=value3;name4=value4當(dāng)應(yīng)從用戶終端300發(fā)送一個HTTP請求到web服務(wù)器202時,基于在瀏覽器300a中保存的cookie的范圍將下述cookie嵌入到HTTP請求的請求信頭中(4)GET/index.htmlCookiename3=value3;name4=value4當(dāng)應(yīng)從用戶終端300發(fā)送一個HTTP請求到web服務(wù)器203時,基于在瀏覽器300a中保存的cookie的范圍將下述cookie嵌入到HTTP請求的請求信頭中(5)GET/index.htmlCookiename4=value4當(dāng)應(yīng)從用戶終端300發(fā)送一個HTTP請求到web服務(wù)器204時,由于沒有cookie其范圍包含web服務(wù)器204,因此發(fā)送HTTP請求不嵌入cookie。換言之,只發(fā)送下述(6)GET/index.html如上所述,通過基于cookie的范圍在HTTP請求的請求信頭中嵌入對應(yīng)作為HTTP請求目的地的web服務(wù)器200的cookie從用戶終端300發(fā)送HTTP請求到web服務(wù)器200。
接收Set-Cookie信頭連同HTTP響應(yīng)的用戶終端300的瀏覽器300a在該Set-Cookie信頭指示的范圍內(nèi)設(shè)置cookie。然而,從用戶終端300的瀏覽器300a的觀點(diǎn)來看,在瀏覽器通過反向代理100接收的HTTP響應(yīng)的來源為反向代理100,而不是web服務(wù)器200。一般來說,在從web服務(wù)器200返回的Set-Cookie信頭中的域和路徑參數(shù)的值不同于反向代理100上的值,以便接收Set-Cookie信頭的瀏覽器300a忽略Set-Cookie信頭或返回帶有錯誤范圍內(nèi)的參數(shù)的cookie。
因此,在本實(shí)施例中,要進(jìn)行這種修改以便即使在已經(jīng)從web服務(wù)器200通過反向代理100返回響應(yīng)到用戶終端300的瀏覽器300a時也允許瀏覽器300a透明地處理Set-Cookie信頭。
在本實(shí)施例中,采用修改Set-Cookie信頭的技術(shù),其中在Set-Cookie信頭中包含的域參數(shù)(域相關(guān)信息)被刪除,而且該域相關(guān)信息被嵌入到路徑參數(shù)中(路徑相關(guān)信息)。在此技術(shù)中,以相反順序重新整理構(gòu)成該域相關(guān)信息的組成部分以根據(jù)Set-Cookie信頭分級縮小cookie的范圍。例如,”www.abc.com″的組成部分的順序被修改為”com.abc.www″。此外,將這些組成部分劃界的字符“.”被“/”替換,并將該結(jié)果信息嵌入到與該路徑相關(guān)的信息中。
在此實(shí)施例中,通過以上述方式轉(zhuǎn)換FQDN(完全資格域名)獲得的結(jié)果信息被稱為“反向FQDN”(反向完全資格域名)。
上面指出,在本實(shí)施例中,通過刪除Set-Cookie信頭中包含的域信息,以與反向FQDN相同的方式處理域信息,以及將結(jié)果信息嵌入到路徑相關(guān)信息中改寫Set-Cookie信頭。由于Set-Cookie信頭是如此改寫的,因此在瀏覽器300a接收的Set-Cookie信頭中不存在域參數(shù),這樣即使在已經(jīng)從反向代理100發(fā)送了Set-Cookie信頭時瀏覽器300a也不會忽略Set-Cookie信頭。于是,在發(fā)送下一或后一HTTP請求到cookie的范圍時,瀏覽器300a將該cookie嵌入到HTTP請求中。
圖2是根據(jù)本實(shí)施例的反向代理100的功能框圖。圖2所示的每個功能框是在程序的控制之下由反向代理100的CPU實(shí)現(xiàn)的軟件塊。
如圖2所示,中繼HTTP請求和HTTP響應(yīng)的反向代理100包括web服務(wù)器名稱獲取部分110,URL改寫部分120,以及HTTP請求傳送部分130。web服務(wù)器名稱獲取部分110識別HTTP請求被發(fā)送所至的web服務(wù)器200。URL改寫部分120改寫作為HTTP請求目的地的URL。HTTP請求傳送部分130將HTTP請求傳送到web服務(wù)器200。web服務(wù)器名稱獲取部分110,URL改寫部分120,以及HTTP請求傳送部分130構(gòu)成了用于將HTTP請求傳送到相應(yīng)的web服務(wù)器200的HTTP請求傳送裝置。
在本實(shí)施例中,從用戶終端300發(fā)送并且被請求傳送裝置傳送的HTTP請求以下述格式尋址http//<reverseproxy>/<prefix>/<path name of web server>
換言之,HTTP請求只通過反向代理100傳送到web服務(wù)器200。
在本實(shí)施例中,反向代理100還包括Set-Cookie信頭改寫部分140,鏈路/位置信頭改寫部分150以及HTTP響應(yīng)發(fā)送部分160。Set-Cookie信頭改寫部分140將從web服務(wù)器200返回的HTTP響應(yīng)中包含的Set-Cookie信頭改寫為預(yù)定格式。鏈路/位置信頭部分150改寫HTTP響應(yīng)中包含的鏈路和位置信頭。HTTP響應(yīng)發(fā)送部分160將HTTP響應(yīng)發(fā)送到作為由Set-Cookie信頭改寫部分140和鏈路/位置信頭改寫部分150改寫的HTTP響應(yīng)的目的地的用戶終端300。Set-Cookie信頭改寫部分140,鏈路/位置信頭改寫部分150以及HTTP響應(yīng)發(fā)送部分160構(gòu)成了用于傳送HTTP響應(yīng)到相應(yīng)用戶終端300的HTTP響應(yīng)傳送裝置。
Web服務(wù)器名稱獲取部分110從HTTP請求的“前綴”部分的描述中識別該HTTP請求被發(fā)送所至的web服務(wù)器200。在本實(shí)施例中,由于用反向FQDN描述的與web服務(wù)器域相關(guān)的信息以后面將描述的方式被輸入到HTTP請求的“前綴”部分,因此,直接從反向FQDN中獲取web服務(wù)器名。接著,web服務(wù)器名稱獲取部分110獲得作為HTTP請求的目的地的web服務(wù)器名并將該HTTP請求發(fā)送到URL改寫部分120。
URL改寫部分120改寫作為HTTP請求目的地的URL以指定在web服務(wù)器200的URL中發(fā)送HTTP請求的路徑。URL改寫部分120從發(fā)送的HTTP請求中刪除該“前綴”部分,并將web服務(wù)器200的原URL描述為HTTP請求的目的地。換言之,URL改寫部分120修改與反向FQDN相關(guān)的信息的組成部分的順序,用(“.”)替換將域相關(guān)信息的字符串或組成部分劃界的字符(“/”)。例如,如果在HTTP請求中存在“com/abc/www”作為域相關(guān)信息,則該域相關(guān)信息將被改寫為web服務(wù)器200的原域名“www.abc.com”。接著,URL改寫部分120將路徑相關(guān)信息添加到域名中以生成web服務(wù)器200的URL作為HTTP請求的目的地,例如“http∥www.abc.com/path1/index.htm1”,并將該HTTP請求發(fā)送到HTTP請求傳送部分130。
HTTP請求傳送部分130將改寫的HTTP請求(2)傳送到所識別的web服務(wù)器200的給定URL,對此改寫的HTTP請求,Web服務(wù)器名稱獲取部分110已識別該web服務(wù)器名作為目的地,而且URL改寫部分120改寫目的地URL。
接收了由反向代理100傳送的HTTP請求的web服務(wù)器200基于該HTTP請求返回HTTP響應(yīng)到發(fā)送該HTTP請求的用戶終端300。反向代理100中繼該HTTP響應(yīng)。
Set-Cookie信頭改寫部分140改寫從web服務(wù)器200返回的HTTP響應(yīng)中包含的Set-Cookie信頭。下面將利用圖3所示的例子描述Set-Cookie信頭改寫部分140改寫coolie的轉(zhuǎn)換規(guī)則。
圖3是在Set-Cookie信頭改寫部分140中改寫Set-Cookie信頭的規(guī)則簡圖。換言之,圖3示意了用于刪除Set-Cookie信頭中包含的域參數(shù)以及轉(zhuǎn)換路徑參數(shù)的轉(zhuǎn)換規(guī)則。在此將描述在4種情形下,即情形1~情形4,分別如何轉(zhuǎn)換Set-Cookie信頭中包含的參數(shù)。在下述的轉(zhuǎn)換規(guī)則例子中,從圖2所示的web服務(wù)器200返回的HTTP響應(yīng)(3)中包含的Set-Cookie信頭被表示為Set-Cookie信頭(3),而根據(jù)本實(shí)施例的轉(zhuǎn)換規(guī)則由Set-Cookie信頭改寫部分140改寫的HTTP響應(yīng)中包含的Set-Cookie信頭則被表示為Set-Cookie信頭(4)。
情形1domain=<web server name>;path=/換言之,當(dāng)返回Set-Cookie信頭的web服務(wù)器200的FQDN為所述參數(shù)的值,而且web服務(wù)器200的路徑為由“/”指示的web服務(wù)器的根目錄的路徑時,Web服務(wù)器200返回下述Set-Cookie信頭(3)Set-Cookiename1=value1;domain=www.abc.com;path=/接著,反向代理100的Set-Cookie信頭改寫部分140將其轉(zhuǎn)換為下述Set-Cookie信頭(4)Set-Cookiename1=value1;path=/com/abc/www/_/根據(jù)情形1所示的轉(zhuǎn)換規(guī)則,從Set-Cookie信頭中刪除域參數(shù)“domain=www.abc.com”。接著,以反向順序重新整理該域參數(shù)的組成部分,而且分界符被“/”替換以生成反向FQDN。最后,所生成的反向FQDN“/com/abc/www/”被嵌入到路徑參數(shù)中,其中在路徑參數(shù)中指示web服務(wù)器200域的部分和指示web服務(wù)器200原路徑的部分之間插入“_”。由此,Set-Cookie信頭被轉(zhuǎn)換以生成一個新的路徑參數(shù)。應(yīng)指出,盡管在該路徑參數(shù)中使用了分界符“_”,但如果用任何其它字符替換也不存在什么問題,這種字符不能用于主機(jī)名但可用于指定URL。
情形2domain=<domain name of web server>;path=/換言之,當(dāng)返回Set-Cookie信頭的web服務(wù)器200的域取域參數(shù)的值(例如,除去”www”的”abc.com”),而且路徑為“/”時,Web服務(wù)器200返回下述Set-Cookie信頭(3)Set-Cookiename1=value1;domain=abc.com;path=/接著,Set-Cookie信頭改寫部分140將其轉(zhuǎn)換為下述Set-Cookie信頭(4)Set-Cookiename1=value1;path=/com/abc/根據(jù)情形2所示的轉(zhuǎn)換規(guī)則,從Set-Cookie信頭中刪除域參數(shù)“domain=abc.com”。接著,以反向順序重新整理該域參數(shù)的組成部分,而且分界符被“/”替換以生成“com/abc”。最后,所生成的“/com/abc”被嵌入到路徑參數(shù)中以生成上述的Set-Cookie信頭。
情形3domain=<web server name>;path?。?
換言之,當(dāng)返回Set-Cookie信頭的web服務(wù)器200的FQDN取域參數(shù)的值,而且路徑不是“/”時,web服務(wù)器200返回下述Set-Cookie信頭(3)Set-Cookiename1=value1;domain=ww.abc.com;path=/path1/接著,Set-Cookie信頭改寫部分140將其轉(zhuǎn)換為下述Set-Cookie信頭(4)Set-Cookiename1=value1;path=/com/abc/www/_/path1根據(jù)情形3所示的轉(zhuǎn)換規(guī)則,從Set-Cookie信頭中刪除域參數(shù)“domain=www.abc.com”。接著,以反向順序重新整理該域參數(shù)的組成部分,而且分界符被“/”替換以生成“/com/abc/www”。最后,從“com/abc/www”以及路徑參數(shù)的初值“/path1/”中創(chuàng)建一個新的路徑參數(shù)值“com/abc/www/_/path1”。
情形4domain=<domain name of web server>;path!=/換言之,這是返回Set-Cookie信頭的web服務(wù)器200的域取域參數(shù)的值,而且路徑不是“/”的情形。本實(shí)施例并不支持這種情形,但這種情形不太可能發(fā)生,因?yàn)檫@意味著在多個web服務(wù)器存在同一個路徑。
鏈路/位置信頭改寫部分150改寫在HTTP響應(yīng)中鏈路和位置信頭的內(nèi)容。換言之,其如下改寫HTTP響應(yīng)中鏈路和位置信頭的內(nèi)容,以顯示響應(yīng)HTTP請求生成的HTTP響應(yīng)已經(jīng)通過反向代理100被發(fā)送http∥<reverseproxy>/<RFQDN>/_/...,其中<RFQDN>是反向FQDN。
在Set-Cookie信頭改寫部分140和鏈路/位置信頭改寫部分150改寫的HTTP響應(yīng)被發(fā)送到HTTP響應(yīng)發(fā)送部分160。下面將參考圖8-10詳細(xì)描述在鏈路/位置信頭改寫部分改寫的HTTP響應(yīng)的數(shù)據(jù)。
HTTP響應(yīng)發(fā)送部分160發(fā)送包含帶有經(jīng)改寫、反向FQDN的Set-Cookie信頭的HTTP響應(yīng)(4)到發(fā)出該HTTP請求的用戶終端300。
當(dāng)接收到該HTTP響應(yīng)時,用戶終端300的瀏覽器300a在其窗口上顯示在該HTTP請求中請求的內(nèi)容。此外,根據(jù)該HTTP響應(yīng)中包含的Set-Cookie在瀏覽器300a中設(shè)置一個cookie。
接著,當(dāng)發(fā)送下一或后一HTTP請求到該cookie的范圍內(nèi)的web服務(wù)器時,瀏覽器將該cookie嵌入到該HTTP請求的請求信頭中。下面利用圖6描述發(fā)送請求信頭中嵌入該cookie的下一或后一HTTP請求的例子。
圖4是在根據(jù)本實(shí)施例的網(wǎng)絡(luò)系統(tǒng)中的數(shù)據(jù)流簡圖。
如圖4所示,假設(shè)例如,該網(wǎng)絡(luò)系統(tǒng)由多個web服務(wù)器,即,web服務(wù)器201(主機(jī)名”www.abc.com”)、web服務(wù)器202(主機(jī)名”www2.abc.com”),web服務(wù)器203(主機(jī)名”www3.sub.abc.com”)及web服務(wù)器204(主機(jī)名”www.xyz.com”),反向代理100(主機(jī)名”rproxy.ijk.com”)以及用戶終端300構(gòu)成。
下面描述在圖4所示的網(wǎng)絡(luò)系統(tǒng)中,在對從用戶終端300發(fā)出通過反向代理100的各個HTTP請求的HTTP響應(yīng)中包含的Set-Cookie信頭。
假設(shè)web服務(wù)器201(”www.abc.com”)返回包含下述兩個Set-Cookie信頭的HTTP響應(yīng)以在用戶終端300上設(shè)置cookie(A1)Set-Cookiename1=value1;domain=ww.abc.com;path=/Set-Cookiename2=value2;domain=abc.com;path=/另外假設(shè)web服務(wù)器203(”www3.sub.abc.com”)返回包含下述Set-Cookie信頭的HTTP響應(yīng)以在用戶終端300上設(shè)置cookie(C1)Set-Cookiename3=value3;domain=sub.abc.com;path=/圖5示意了分別對應(yīng)”name1”、”name2”和”name3”的cookie的范圍內(nèi)的web服務(wù)器200。如圖5所示,與”name1”相關(guān)的cookie的范圍包括web服務(wù)器201(”www.abc.com”)。與”name2”相關(guān)的cookie的范圍包括web服務(wù)器201(”www.abc.com”),web服務(wù)器202(”www2.abc.com”)和web服務(wù)器203(”www3.sub.abc.com”)。與”name3”相關(guān)的cookie的范圍包括web服務(wù)器203(”www3.sub.abc.com”)。
這些Set-Cookie信頭(A1)和(C1)被反向代理100的Set-Cookie信頭改寫部分140如下轉(zhuǎn)換其中一個Set-Cookie信頭(A1),即,(A1)Set-Cookiename1=value1;domain=www.abc.com;path=/被上述情形1的轉(zhuǎn)換規(guī)則轉(zhuǎn)換為下述(A2)Set-Cookiename1=value1;path=/com/abc/www/_/另一Set-Cookie信頭(A1),即,(A1)Set-Cookiename2=value2;domain=abc.com;path=/被上述情形2的轉(zhuǎn)換規(guī)則轉(zhuǎn)換為下述(A2)Set-Cookiename2=value2;path=/com/abc/此外,Set-Cookie信頭(C1),即,(C1)Set-Cookiename1=value1;domain=www.abc.com;path=/被上述情形2的轉(zhuǎn)換規(guī)則轉(zhuǎn)換為下述(C2)Set-Cookiename3=value3;path=/com/abc/sub/因此,當(dāng)訪問每個web服務(wù)器時,用戶終端300發(fā)送嵌入了圖6所示的的cookie的HTTP請求。
換言之,當(dāng)用戶終端300發(fā)送HTTP請求到web服務(wù)器201時,包含對應(yīng)圖5所示的cookie范圍的所有匹配cookie的名稱和數(shù)值對的行被嵌入到HTTP請求的請求信頭中,并且發(fā)送下述HTTP請求(A3)作為結(jié)果http∥rproxy.ijk.com/com/abc/www/_/...
Cookiename1=value1;name2=value2當(dāng)用戶終端300發(fā)送HTTP請求到web服務(wù)器202時,包含對應(yīng)圖5所示的cookie范圍的匹配cookie的名稱和數(shù)值對的行被嵌入到HTTP請求的請求信頭中,并且發(fā)送下述HTTP請求(B3)作為結(jié)果http∥rproxy.ijk.com/com/abc/www2/_/...
Cookiename2=value2當(dāng)用戶終端300發(fā)送HTTP請求到web服務(wù)器203時,包含對應(yīng)圖5所示的cookie范圍的所有匹配cookie的名稱和數(shù)值對的行被嵌入到HTTP請求的請求信頭中,并且發(fā)送下述HTTP請求(C3)作為結(jié)果http∥rproxy.ijk.com/com/abc/sub/www3/_/...
Cookienam2=value2;name3=value3當(dāng)用戶終端300發(fā)送HTTP請求到web服務(wù)器204時,由于沒有cookie對應(yīng)該HTTP請求,因此發(fā)送下述HTTP請求(D3)不帶任何cookiehttp∥rproxy.ijk.com/com/abc/xyz/www/_/...
如上所述,在下一或后一HTTP請求中包含的cookie匹配圖5所示的cookie范圍內(nèi)的web服務(wù)器200,由此能通過反向代理100透明地處理cookie。
這些HTTP請求(A3)-(C3)在web服務(wù)器名稱獲取部分110和URL改寫部分120經(jīng)過預(yù)定處理,并被轉(zhuǎn)換為HTTP請求(A4)-(C4)。接著HTTP請求傳送部分130分別將HTTP請求(A4)傳送到web服務(wù)器201,將HTTP請求(B4)傳送到web服務(wù)器202,以及將HTTP請求(C4)傳送到web服務(wù)器203。
類似地,HTTP請求傳送部分130將HTTP請求(D3)傳送到web服務(wù)器204作為HTTP請求(D4)。
一般來說,端口80用于轉(zhuǎn)發(fā)常規(guī)HTTP請求。然而在本實(shí)施例中,如果需要明確指定在web服務(wù)器200上非缺省號的端口號,則可如下指定端口號http∥<reverseproxy>/<RFQDN>/-<port>/<path name of webserver>
因此,在”<port>”部分可指定web服務(wù)器200上的端口號,以便即使在一個異常端口用作用于HTTP請求的web服務(wù)器200上的端口時,也可發(fā)送HTTP請求到web服務(wù)器200。
此外,在本實(shí)施例中,”<RFQDN>”用作<prefix>,但即使添加一個固定字符串,例如”xxx/”作為<RFQDN>的前綴,也可透明地處理cookie。例如,假設(shè)瀏覽器300a從web服務(wù)器201(名稱為”www.abc.com”)通過反向代理100訪問名為”/index.html”的網(wǎng)頁。在此情況下,發(fā)送下述HTTP請求http∥<reverseproxy>/xxx/com/abc/www/_/index.html另外假設(shè)web服務(wù)器201返回下述Set-Cookie信頭Set-Cookiename1=value1;domain=abc.com;path=/在此情況下,反向代理100將該Set-Cookie信頭轉(zhuǎn)換為下述Set-Cookiename1=value1;path=/xxx/com/abc/接著反向代理100將經(jīng)過轉(zhuǎn)換的Set-Cookie信頭發(fā)送到用戶終端300。
在本實(shí)施例中,”www.abc.com”被轉(zhuǎn)換為”com/abc/www”。然而,一旦指定了域參數(shù),只有頂級域名,如”.com”、”.net”或”.co.jp”,無法被指配為域參數(shù)。換言之,必須從低于頂級域一級的子域指定域參數(shù),如”abc.com”、”abc.net”或”abc.co.jp”。因此,通過組合指定域參數(shù)所必需的最小域名集合可如下描述到達(dá)反向代理100的訪問路徑http∥<reverseproxy>/abc-com/www/_/index.html(對于圖4中的A3),以及http∥<reverseproxy>/abc-com/sub/www3//index.html(對于圖4中的C3)。
接收這些HTTP請求的反向代理100讀出在分界符””之前的每個字符串,并分別解釋目的地web服務(wù)器名為”www.abc.com”和″www3.sub.abc.com”。接著反向代理100發(fā)送給相應(yīng)的web服務(wù)器200下述HTTP請求
http∥www.abc.com/index.html(對于圖4中的A4),以及http∥www3.sub.abc.com/index.html(對于圖4中的C4)。
為響應(yīng)這些HTTP請求,web服務(wù)器200返回下述Set-Cookie信頭,例如Set-Cookieid1=001;domian=www.abc.com;path=/;...(對于圖4中的A1)Set-Cookieid1=001;domian=sub.abc.com;path=/;...(對于圖4中的C1)反向代理100如下轉(zhuǎn)換這些Set-Cookie信頭Set-Cookieid1=001;path=/abc-com/www/_/;...(對于圖4中的A2)Set-Cookieid1=001;path=/abc-com/sub/;...(對于圖4中的C2)。
因此,即使以上述方式描述<prefix>,也能透明地處理cookie。
在利用圖4描述的實(shí)例中,在從反向代理100返回的Set-Cookie信頭中沒有指定域參數(shù)。在這種情況下,Set-Cookie信頭描繪已經(jīng)發(fā)送了HTTP響應(yīng)的服務(wù)器。因此,在圖4所示的例子中,反向代理100可例如用其自己的服務(wù)器名替換Set-Cookie信頭中的域參數(shù),以如下明確指定反向代理100的服務(wù)器名Set-Cookiename1=value1;path=/com/abc/www/_/ ;domain=<reverse proxy>
圖7是在根據(jù)本實(shí)施例的反向代理100中的處理流程圖。參考圖7所示的流程圖描述反向代理100對從用戶終端300發(fā)送的HTTP請求和從web服務(wù)器200返回的HTTP響應(yīng)執(zhí)行的處理。圖8-10示意了在下述的每個處理步驟使用的數(shù)據(jù)(HTTP響應(yīng))。
當(dāng)用戶終端300發(fā)送嵌入了cookie的HTTP請求時,在反向代理100接收的HTTP請求被傳遞到web服務(wù)器名稱獲取部分110(步驟701)。下面假設(shè)在步驟701接收的HTTP請求為如下(Req1)GET/com/abc/www/_/index.html HTTP/1.1
web服務(wù)器名稱獲取部分110基于在步驟701接收的HTTP請求中的前綴獲取web服務(wù)器的名稱(步驟702)。由此識別作為HTTP請求目的地的web服務(wù)器200。在步驟702已經(jīng)識別了目的地web服務(wù)器名的HTTP請求被發(fā)送到URL改寫部分120。URL改寫部分120基于在步驟702通過web服務(wù)器名稱獲取部分110獲取的信息改寫URL(步驟703)。換言之,URL改寫部分120在步驟703獲取作為HTTP請求目的地的web服務(wù)器200的原URL和路徑”/www.abc.com/index/html”。已經(jīng)識別了作為HTTP請求目的地的web服務(wù)器200(”www.abc.com”)以及web服務(wù)器200的URL(指示”www.abc.com”的根目錄的”index.html”)的HTTP請求,即,(Req2)GET/index.html HTTP/1.1被發(fā)送到HTTP請求傳送部分130。HTTP請求傳送部分130傳送該HTTP請求到在步驟702識別的web服務(wù)器200(步驟704)。
接收該HTTP請求的web服務(wù)器200發(fā)送給發(fā)出該HTTP請求的用戶終端300針對從反向代理100傳送的HTTP請求的HTTP響應(yīng)。在該HTTP響應(yīng)中嵌入一個cookie信頭以通知在未來HTTP請求中的用戶狀態(tài),并返回嵌入了cookie信頭的HTTP響應(yīng)。來自web服務(wù)器200的HTTP響應(yīng)通過反向代理100被返回用戶終端。換言之,從web服務(wù)器200返回的HTTP響應(yīng)在反向代理100被接收,并被傳遞到Set-Cookie信頭改寫部分140(步驟705)。
圖8是在步驟705接收的HTTP響應(yīng)的實(shí)例。如圖8所示,這個HTTP響應(yīng)包括下述Set-Cookie信頭Set-Cookiesessionid=001;path=/;domain=abc.comSet-Cookie信頭包括對應(yīng)識別用戶的ID的”sessionid=001”,識別瀏覽器300a返回cookie所至的web服務(wù)器的URL(路徑)的”path=/”,以及識別作為HTTP響應(yīng)目的地的web服務(wù)器的域的”domain=abc.com”。除了Set-Cookie信頭的上述信息,HTTP響應(yīng)還包括從web服務(wù)器200返回的各種信頭信息。
反向代理100一接收到該HTTP響應(yīng),Set-Cookie信頭改寫部分140就確定在該HTTP響應(yīng)中是否存在一個Set-Cookie信頭(步驟706)。當(dāng)在步驟706確定在該HTTP響應(yīng)中存在Set-Cookie信頭時,Set-Cookie信頭改寫部分140改寫該Set-Cookie信頭(步驟707)。這個Set-Cookie信頭是根據(jù)圖3所示的轉(zhuǎn)換規(guī)則改寫的。換言之,Set-Cookie信頭改寫部分140刪除域參數(shù),以相反順序重新整理該域參數(shù)的組成部分,并用”/”替換分界符”.”。接著,Set-Cookie信頭改寫部分140將改寫的信息嵌入到Set-Cookie信頭的路徑參數(shù)中。當(dāng)Set-Cookie信頭改寫部分140在步驟706確定在該HTTP響應(yīng)中不存在Set-Cookie信頭時,省略步驟707。
圖9是帶有在步驟707改寫的Set-Cookie信頭的HTTP響應(yīng)的實(shí)例。如圖9所示,在步驟707改寫的Set-Cookie信頭為下述Set-Cookiesessionid=001;path=/com/abc/圖9示意已經(jīng)根據(jù)圖3所示的轉(zhuǎn)換規(guī)則改寫了上述Set-Cookie。
帶有在步驟707改寫的Set-Cookie信頭針對反向FQDN的HTTP響應(yīng)被從Set-Cookie信頭改寫部分140發(fā)送到鏈路/位置信頭改寫部分150。接收該HTTP響應(yīng)的鏈路/位置信頭改寫部分150改寫內(nèi)容中的鏈路和位置信頭(步驟708)。
圖10是帶有改寫的鏈路的HTTP響應(yīng)的實(shí)例。下述是圖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響應(yīng)被從HTTP響應(yīng)發(fā)送部分160發(fā)送到已經(jīng)發(fā)送了在步驟701接收的HTTP請求的用戶終端300(步驟709)。接著在用戶終端300的瀏覽器上顯示基于HTTP響應(yīng)的內(nèi)容,以及鏈接到該HTTP響應(yīng)的數(shù)據(jù)和文件,并且在瀏覽器中保存和存儲基于該HTTP響應(yīng)中的Set-Cookie信頭的cookie預(yù)定范圍。
在本實(shí)施例中,反向代理100刪除域參數(shù),并發(fā)送給用戶終端帶有以上述方式改寫的路徑參數(shù)的Set-Cookie信頭。結(jié)果,基于在通過反向代理100返回的HTTP響應(yīng)中包含的Set-Cookie信頭在用戶終端300的瀏覽器300a中設(shè)置和保存一個cookie。
接著,當(dāng)從瀏覽器300a接收帶有cookie信頭的下一或后一HTTP請求時,反向代理100按原樣將該cookie信頭傳送給對應(yīng)的一個web服務(wù)器200。這導(dǎo)致只發(fā)送cookie給在Set-Cookie信頭中匹配web服務(wù)器200指定的域和路徑的范圍。
如上所述和根據(jù)本發(fā)明,可在客戶通過反向代理訪問服務(wù)器的網(wǎng)絡(luò)系統(tǒng)中透明地處理由服務(wù)器設(shè)置的cookie。
根據(jù)本發(fā)明,可提供一個帶有Set-Cookie改寫能力的反向代理以透明地處理服務(wù)器設(shè)置的cookie。
權(quán)利要求
1.一種網(wǎng)絡(luò)系統(tǒng),包括在網(wǎng)絡(luò)上提供的多個web服務(wù)器以及中繼外部訪問所述多個web服務(wù)器的反向代理,其中每個所述web服務(wù)器響應(yīng)來自與所述網(wǎng)絡(luò)連接的某個終端的請求,以返回所述終端一個包含用于維護(hù)所述終端狀態(tài)的信息的響應(yīng),以及所述反向代理將包含在所述響應(yīng)中用于維護(hù)所述終端狀態(tài)的信息轉(zhuǎn)換為所述終端可識別的格式,作為所述網(wǎng)絡(luò)的配置,并返回具有所述轉(zhuǎn)換的信息的響應(yīng)。
2.根據(jù)權(quán)利要求1的網(wǎng)絡(luò)系統(tǒng),其中所述反向代理刪除在用于維護(hù)所述終端狀態(tài)的信息中包含的指定所述web服務(wù)器的域的域參數(shù),并將所述域參數(shù)嵌入到在所述信息中包含的所述web服務(wù)器的路徑參數(shù)中。
3.根據(jù)權(quán)利要求2的網(wǎng)絡(luò)系統(tǒng),其中所述反向代理以相反順序重新整理所述域參數(shù)的組成部分,并將所述重新整理的域參數(shù)嵌入到所述路徑參數(shù)中。
4.一種從web服務(wù)器中繼數(shù)據(jù)到用戶終端的反向代理,包括信頭改寫部分,用于接收從web服務(wù)器返回到所述用戶終端的數(shù)據(jù),并將在所述數(shù)據(jù)中包含的域改寫為所述用戶終端可識別的格式;以及數(shù)據(jù)發(fā)送部分,用于向所述用戶終端發(fā)送由所述信頭改寫部分改寫的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4的反向代理,其中所述信頭改寫部分以相反順序重新整理在所述數(shù)據(jù)中包含的對所述域的說明,以生成一個包含以相反順序重新整理的域的說明的路徑。
6.根據(jù)權(quán)利要求4的反向代理,還包括鏈路/位置改寫部分,用于依照包含由所述信頭改寫部分改寫的域的說明的路徑,改寫在所述數(shù)據(jù)中包含的鏈路和位置的域及路徑。
7.根據(jù)權(quán)利要求4的反向代理,還包括web服務(wù)器名稱獲取部分,用于接收從所述用戶終端發(fā)送到web服務(wù)器的請求,并基于所述請求從所述網(wǎng)絡(luò)上的多個服務(wù)器中識別所述web服務(wù)器,作為所述請求的訪問目的地;URL改寫部分,用于基于所述請求將在所述請求中描述的訪問路徑改寫為所述web服務(wù)器的原始路徑;以及請求傳送部分,用于將所述請求傳送到由所述請求指示的web服務(wù)器。
8.一種從用戶終端中繼請求到web服務(wù)器的反向代理,包括web服務(wù)器名稱獲取部分,用于基于通過轉(zhuǎn)換對所述接收的請求的說明所獲得的信息,從網(wǎng)絡(luò)上的多個服務(wù)器中識別所述請求被發(fā)送所到的web服務(wù)器;URL改寫部分,用于基于由所述web服務(wù)器名稱獲取部分識別的web服務(wù)器,將所述請求的訪問目的地改寫為所述web服務(wù)器的URL;以及請求傳送部分,用于將所述請求傳送到所述web服務(wù)器的所述URL。
9.一種在終端和服務(wù)器之間中繼HTTP請求的傳輸以及返回HTTP響應(yīng)的計算機(jī)設(shè)備,包括HTTP請求傳送裝置,用于中繼具有從所述終端的瀏覽器發(fā)送的cookie的HTTP響應(yīng),以將具有所述cookie的HTTP請求傳送到作為所述HTTP請求目的地的服務(wù)器;以及HTTP響應(yīng)傳送裝置,用于響應(yīng)所述HTTP請求接收從所述服務(wù)器返回的HTTP響應(yīng),刪除在Set-Cookie信頭中描述的域,以相反順序重新整理所述域的組成部分,將所述重新整理的組成部分嵌入到在所述Set-Cookie信頭中描述的路徑中,并將具有所述Set-Cookie信頭的HTTP響應(yīng)傳送到所述終端。
10.根據(jù)權(quán)利要求9的計算機(jī)設(shè)備,其中所述HTTP請求傳送裝置指定所述服務(wù)器上的通信端口的端口號與所述服務(wù)器的域,并將所述HTTP請求傳送到所述服務(wù)器。
11.根據(jù)權(quán)利要求9的計算機(jī)設(shè)備,其中所述HTTP響應(yīng)傳送裝置根據(jù)所述HTTP響應(yīng)向Set-Cookie信頭添加一個預(yù)定的固定字符串,并將所述帶有Set-Cookie信頭的HTTP響應(yīng)傳送到所述終端。
12.根據(jù)權(quán)利要求9的計算機(jī)設(shè)備,其中所述HTTP響應(yīng)傳送裝置在以相反順序重新整理組成部分時,編輯用于識別所述域所必需的組成部分,并將所述HTTP響應(yīng)傳送到所述終端。
13.根據(jù)權(quán)利要求9的計算機(jī)設(shè)備,其中所述HTTP響應(yīng)傳送裝置用其自己的服務(wù)器名稱替換Set-Cookie信頭中所述服務(wù)器的所述域參數(shù),并將所述HTTP響應(yīng)傳送到所述終端。
14.一種用于計算機(jī)設(shè)備中繼在第一計算機(jī)設(shè)備和第二計算機(jī)設(shè)備之間交換的數(shù)據(jù)的數(shù)據(jù)處理方法,包括步驟接收從所述第一計算機(jī)設(shè)備發(fā)送到所述第二計算機(jī)設(shè)備的響應(yīng);確定所述響應(yīng)是否包含Set-Cookie信頭;在所述響應(yīng)包含Set-Cookie信頭時改寫所述Set-Cookie信頭,以便基于所述Set-Cookie信頭在所述第二計算機(jī)設(shè)備上設(shè)置的cookie將具備所述第二計算機(jī)設(shè)備可識別的格式;以及發(fā)送給所述第二計算機(jī)帶有所述改寫的Set-Cookie信頭的響應(yīng)。
15.一種用于控制計算機(jī)設(shè)備中繼在第一計算機(jī)設(shè)備和第二計算機(jī)設(shè)備之間交換的數(shù)據(jù)、以執(zhí)行預(yù)定的數(shù)據(jù)處理的程序產(chǎn)品,包括用于接收從所述第一計算機(jī)設(shè)備發(fā)送到所述第二計算機(jī)設(shè)備的響應(yīng)的處理;用于在所述響應(yīng)包含Set-Cookie信頭時改寫所述Set-Cookie信頭,以便基于所述Set-Cookie信頭在所述第二計算機(jī)設(shè)備上設(shè)置的cookie將具備所述第二計算機(jī)設(shè)備可識別的格式的處理;以及用于發(fā)送給所述第二計算機(jī)設(shè)備帶有所述改寫的Set-Cookie信頭的響應(yīng)的處理。
16.根據(jù)權(quán)利要求15的程序產(chǎn)品,其中在用于改寫Set-Cookie信頭的所述處理中,以相反順序改變在所述響應(yīng)的所述Set-Cookie信頭中包含的域的順序,而且所述域的分界符被預(yù)定字符替換以生成包含以相反順序重新整理的域的路徑。
17.根據(jù)權(quán)利要求15的程序產(chǎn)品,控制所述計算機(jī)設(shè)備依照在所述Set-Cookie信頭中包含的路徑進(jìn)一步執(zhí)行處理,以改寫在所述響應(yīng)中包含的鏈路和位置的域及路徑。
18.一種用于控制計算機(jī)設(shè)備中繼在第一計算機(jī)設(shè)備和第二計算機(jī)設(shè)備之間交換的數(shù)據(jù)、以執(zhí)行預(yù)定處理的程序產(chǎn)品,包括用于接收從所述第二計算機(jī)設(shè)備發(fā)送的請求,并基于通過轉(zhuǎn)換對所接收請求的描述所獲得的信息,識別所述請求被發(fā)送所至的第一計算機(jī)設(shè)備的處理;用于將所述請求的訪問目的地改寫為所識別的第一計算機(jī)設(shè)備的URL的處理;以及用于發(fā)送所述請求到所述識別的第一計算機(jī)設(shè)備的URL的處理。
全文摘要
本發(fā)明的目的是在客戶通過反向代理訪問服務(wù)器的網(wǎng)絡(luò)系統(tǒng)中有效使用服務(wù)器設(shè)置的cookie。在從web服務(wù)器中繼數(shù)據(jù)到用戶終端的反向代理100中,從web服務(wù)器接收HTTP響應(yīng)的Set-Cookie信頭改寫部分140刪除在Set-Cookie信頭中包含的域參數(shù),以相反順序重新整理域參數(shù)的組成部分,并將經(jīng)過重新整理的組成部分嵌入到HTTP響應(yīng)中。由此Set-Cookie信頭改寫部分140以用戶終端可識別的格式改寫HTTP響應(yīng)。鏈路/位置信頭改寫部分150以HTTP響應(yīng)被Set-Cookie信頭改寫部分140改寫的一致格式改寫鏈路和位置的域和路徑。HTTP響應(yīng)發(fā)送部分160發(fā)送經(jīng)改寫的HTTP響應(yīng)到用戶終端。
文檔編號H04L29/06GK1487711SQ03178638
公開日2004年4月7日 申請日期2003年7月18日 優(yōu)先權(quán)日2002年9月3日
發(fā)明者高橋弘一 申請人:國際商業(yè)機(jī)器公司