两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種實(shí)現(xiàn)web反向代理的方法

文檔序號(hào):7928253閱讀:170來源:國(guó)知局

專利名稱::一種實(shí)現(xiàn)web反向代理的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及WEB代理技術(shù),特別涉及一種實(shí)現(xiàn)WEB反向代理的方法。
背景技術(shù)
:在現(xiàn)有的超文本傳輸協(xié)議(HyperTextTransferProtocol,HTTP)請(qǐng)求過程可以如下本地客戶端連接上遠(yuǎn)程HTTP服務(wù)器www.sina.com.cn,然后客戶端發(fā)送下面的字符串給服務(wù)器POST/iframe/2008/weather/l10100.htmlHTTP/1.1Host:www.sina.com.cnReferer:http://news.sina.com.cn/iframe/2008/weather/jump—new.htmlCookie:vjuids=20c08e420.11bc93ee742.0.35cc680c38f4e;vjlast=1226753330;SINAGLOBAL=220.181.35.250.92791219544751236;SINAPUID=220.181.34.147.306481219848274604;SSCS咖=1;SINA_NEWS_CUSTOMIZE_city=%u5317%u4EACuser=%61%66%61%66%61%66&passwrod=%66%61%73%66%61%73%66%61%73%66%61在上面的請(qǐng)求中,有如下幾項(xiàng)需要說明/iframe/2008/weather/l10100.html,請(qǐng)求的URI,也可直接稱為統(tǒng)一資源定位符(Uniform/UniversalResourceLocator,URL)表示本請(qǐng)求要獲取的目標(biāo)服務(wù)器中相應(yīng)資源的路徑,也被稱為網(wǎng)頁地址,是因特網(wǎng)上標(biāo)準(zhǔn)的資源的地址(Address)。比如http:〃www.sina.com.cn/固s/33.html,其中后半部份/news/33,html有時(shí)候也被稱之為URI,也可以籠統(tǒng)的稱之為URL。本申請(qǐng)中的URI和URL為同一指定。POST作為HTTP協(xié)議發(fā)送是選用的方法類型,如果采用該類型,表示用戶要提交數(shù)據(jù)到服務(wù)器,當(dāng)前例子的數(shù)據(jù)就是最后的一部分user=%61%66%61%66%61%66&passwrod=%66%61%73%66%61%73%66%61%73%66%61,該字段可以選擇的值還有GET、PUT等,但是GET方法是最常用的,如果選用GET方法,則表示客戶端僅僅想獲取當(dāng)前路徑的資源,后面的數(shù)據(jù)部分則不應(yīng)該發(fā)送。Referer表示發(fā)送當(dāng)前資源時(shí)候的參考路徑,也就是說用戶知曉當(dāng)前資源路徑的來源地址,比如該請(qǐng)求中Referer:http://news.sina.com.cn/iframe/2008/weather/jump—new.html表不http://news.sina.com.cn/iframe/2008/weather/jump_new.html中包含了/iframe/2008/weather/l10100.html的鏈接,所以客戶端才可以順利的找到/iframe/2008/weather/l10100.html并且發(fā)出訪問請(qǐng)求。www.sina.com.cn服務(wù)器收到上面的請(qǐng)求以后,發(fā)送下面的回應(yīng)給客戶端HTTP/1.0302MovedServer:Apache/2.0.63(Unix)Location:http://www.sina.com.cn/php/34342.htmlConnection:closeContent-Type:text/html;charset=iso_8859_l〈!D0CTYPEHTMLPUBLIC"-〃IETF〃DTDHTML2.0〃EN">〈htmlXhead〉〈title>302Moved〈/title>〈/head>〈body>〈hl>Moved〈/hl>〈p>Thedocumenthasmoved〈ahref=〃http:〃www.sina.com.cn/php/34342.html">here〈/a>.〈/p>〈/body>〈/html>在上面的響應(yīng)中,第一行的響應(yīng)狀態(tài)碼302表示這是一個(gè)臨時(shí)重定向,表示服務(wù)器要求瀏覽器客戶端重新訪問一個(gè)新的地址,新地址放在響應(yīng)頭Location,比如本響應(yīng)中服務(wù)器要求客戶端重新訪問地址http:〃www.sina.com.cn/php/34342.html。作為HTTP協(xié)議的回應(yīng),一般均為HTML頁面,當(dāng)然有時(shí)候也包含圖片、音頻等,下面是一個(gè)HTML頁面樣例〈html>〈body〉〈ahref=〃/abs.html">abs〈/a>〈/html>上面的樣例中,例如頁面里的鏈接標(biāo)記為A、圖片標(biāo)記為MG、其他比如提交表單的FORM等均為本文關(guān)注的標(biāo)記或標(biāo)簽(TAG),而鏈接標(biāo)記A中的/abs.html為絕對(duì)URL,MG里面的imags/3.jpg為相對(duì)URL。通常的代理服務(wù)器,只用于代理內(nèi)部網(wǎng)絡(luò)對(duì)Internet的連接請(qǐng)求,客戶機(jī)必須指定代理服務(wù)器,并將本來要直接發(fā)送到Web服務(wù)器上的HTTP請(qǐng)求發(fā)送到代理服務(wù)器中。由于外部網(wǎng)絡(luò)上的主機(jī)并不會(huì)配置并使用這個(gè)代理服務(wù)器,普通代理服務(wù)器也被設(shè)計(jì)為在Internet上搜尋多個(gè)不確定的服務(wù)器,而不是針對(duì)Internet上多個(gè)客戶機(jī)的請(qǐng)求訪問某一個(gè)固定的服務(wù)器,因此普通的Web代理服務(wù)器不支持外部對(duì)內(nèi)部網(wǎng)絡(luò)的訪問請(qǐng)求。當(dāng)一個(gè)代理服務(wù)器能夠代理外部網(wǎng)絡(luò)上的主機(jī),訪問內(nèi)部網(wǎng)絡(luò)時(shí),這種代理服務(wù)的方式稱為反向代理服務(wù)。此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)Web服務(wù)器,外部網(wǎng)絡(luò)就可以簡(jiǎn)單把它當(dāng)作一個(gè)標(biāo)準(zhǔn)的Web服務(wù)器而不需要特定的配置。不同之處在于,這個(gè)服務(wù)器沒有保存任何網(wǎng)頁的真實(shí)數(shù)據(jù),所有的靜態(tài)網(wǎng)頁或者CGI程序,都保存在內(nèi)部的Web服務(wù)器上。因此對(duì)反向代理服務(wù)器的攻擊并不會(huì)使得網(wǎng)頁信息遭到破壞,這樣就增強(qiáng)了Web服務(wù)器的安全性。然而,一般的反向代理服務(wù)器都存在很大的弊病,主要分為兩種情形當(dāng)代理服務(wù)器不改變WEB響應(yīng)頁面的內(nèi)容的實(shí)現(xiàn),這種情況下,一個(gè)外部反向代理服務(wù)器只能支持頁面無絕對(duì)URL鏈接的網(wǎng)站,比如,如果返回的頁面中包含一個(gè)鏈接http://internal,server,com./abc.gif,貝U用戶訪問就會(huì)失敗。第二種情況,有些實(shí)現(xiàn)中,將所有不符合要求的鏈接URL全部替換為其定義格式的URL,這樣在外面就可以方便的訪問,但是這種方式最大的問題就是帶來了很大的性能問題,在不必要的情況下作出替換,是得不償失的。
發(fā)明內(nèi)容本發(fā)明的目的在于,提供一種實(shí)現(xiàn)WEB反向代理的方法。本發(fā)明的實(shí)現(xiàn)WEB反向代理的方法,其中,當(dāng)用戶端在瀏覽器的書簽欄或者界面輸入框下輸入的第一條WEB反向代理處理請(qǐng)求后,包括下列步驟客戶端發(fā)送HTTP/HTTPS請(qǐng)求,該請(qǐng)求的統(tǒng)一資源定位符URL中包含反向代理服務(wù)器SSLVPN的地址、被訪問的后臺(tái)服務(wù)器的地址以及被訪問的后臺(tái)服務(wù)器的資源路徑;反向代理服務(wù)器SSLVPN截獲到上述請(qǐng)求后,提取出被訪問的后臺(tái)服務(wù)器地址和資源路徑,正常轉(zhuǎn)發(fā)請(qǐng)求。另外,可以包括下列步驟當(dāng)用戶訪問到WEB反向代理后端的頁面以后,再通過瀏覽器中的HTML頁面點(diǎn)擊而發(fā)出請(qǐng)求;該請(qǐng)求中的HTML的標(biāo)記或標(biāo)簽中的統(tǒng)一資源定位符類型屬性被賦值為相對(duì)路徑或絕對(duì)路徑。其中,在所述統(tǒng)一資源定位符類型屬性被賦值為相對(duì)路徑時(shí),瀏覽器在處理該請(qǐng)求前,將按照當(dāng)前瀏覽網(wǎng)頁作為基準(zhǔn),然后拼接出本請(qǐng)求的統(tǒng)一資源定位符。其中,在所述統(tǒng)一資源定位符類型屬性被賦值為絕對(duì)路徑時(shí),瀏覽器在處理該請(qǐng)求前,將直接發(fā)送請(qǐng)求的URL,該URL不符合WEB反向代理的交互接口規(guī)范,但附帶了符合該交互接口規(guī)范的Referer請(qǐng)求頭;根據(jù)HTTP協(xié)議規(guī)范瀏覽器將當(dāng)前請(qǐng)求的父URL使用Referer請(qǐng)求頭帶到當(dāng)前請(qǐng)求中;反向代理服務(wù)器SSLVPN根據(jù)這兩項(xiàng)信息判定出被訪問的后臺(tái)服務(wù)器地址和資源路徑,以正常轉(zhuǎn)發(fā)請(qǐng)求。其中,在該請(qǐng)求為使用GET類型方法的情況下,在進(jìn)行轉(zhuǎn)發(fā)之前,包括下列步驟向客戶端發(fā)送一個(gè)HTTP302臨時(shí)重定向,該重定向?qū)⒏淖優(yōu)g覽器的當(dāng)前訪問地址,同時(shí)在重定向的請(qǐng)求中包含了SSLVPN本身的地址,后臺(tái)服務(wù)器的地址,后臺(tái)服務(wù)器的資源路徑。當(dāng)客戶端重新發(fā)送上述經(jīng)過重定向的請(qǐng)求以后,進(jìn)行正常轉(zhuǎn)發(fā)。進(jìn)一步地,在該請(qǐng)求為使用POST類型方法的情況下,在進(jìn)行轉(zhuǎn)發(fā)之前,可以包括下列步驟在發(fā)送重定向請(qǐng)求時(shí),先發(fā)送一個(gè)保存在SSLVPN中的文件索引,在瀏覽器重新請(qǐng)求該索引時(shí),再重新拼接出要訪問的后臺(tái)資源而進(jìn)行轉(zhuǎn)發(fā),同時(shí)該重定向的索引格式符合預(yù)定的URL格式。其中,所述URL格式為協(xié)議http或者h(yuǎn)ttps:〃反向代理服務(wù)器地址/WF/后臺(tái)WEB服務(wù)器主機(jī)地址/后臺(tái)協(xié)議類型/后臺(tái)WEB服務(wù)器資源路徑。進(jìn)一步地,在進(jìn)行轉(zhuǎn)發(fā)時(shí),外部系統(tǒng)添加訪問控制的控制點(diǎn),即與AAAA系統(tǒng)結(jié)合,所述AAAA系統(tǒng)包括認(rèn)證Authentication:驗(yàn)證用戶的身份與可使用的網(wǎng)絡(luò)服務(wù);授權(quán)5Authorization:依據(jù)認(rèn)證結(jié)果開放網(wǎng)絡(luò)服務(wù)給用戶;訪問控制AccessControl,根據(jù)授權(quán)對(duì)于相關(guān)資源做出是否允許訪問;計(jì)帳Accounting:記錄用戶對(duì)各種網(wǎng)絡(luò)服務(wù)的用量,并提供給計(jì)費(fèi)系統(tǒng)。本發(fā)明的有益效果是依照本發(fā)明的實(shí)現(xiàn)WEB反向代理的方法,解決反向代理服務(wù)器正確標(biāo)識(shí)每個(gè)請(qǐng)求的目的內(nèi)部WEB服務(wù)器地址,目的請(qǐng)求協(xié)議(HTTP/HTTPS)、方法類型(GET/POST)、以及目的資源的正確路徑,從而做到正常轉(zhuǎn)發(fā);在相對(duì)URL請(qǐng)求的情況下通過定義的規(guī)范化URL以及瀏覽器本身的內(nèi)在特性完成客戶端正確識(shí)別目標(biāo)URL的;而在絕對(duì)URL請(qǐng)求的情況下則是通過交互(重定向)來完成URL重新調(diào)整。本發(fā)明中所有實(shí)現(xiàn)都是對(duì)于HTTP請(qǐng)求,響應(yīng)頭進(jìn)行加工處理,沒有進(jìn)行任何HTML頁面內(nèi)部的替換,無論是格式化的URL,還是相對(duì)URL處理,還是基于重定向的絕對(duì)URL格式處理,均可以在Web服務(wù)器上面高效的完成。圖1為本發(fā)明的初始請(qǐng)求處理流程示意圖;圖2為本發(fā)明的絕對(duì)URL下的GET類型請(qǐng)求處理過程示意圖;圖3為用戶通過local,sslvpn.com訪問后臺(tái)資源服務(wù)器remotehost里面的相關(guān)頁面的示意圖;圖4為本發(fā)明的絕對(duì)URL下的POST類型請(qǐng)求處理過程示意圖。具體實(shí)施例方式以下,參考附圖14詳細(xì)描述本發(fā)明的實(shí)現(xiàn)WEB反向代理的方法。任何要從客戶端訪問的后臺(tái)Web服務(wù)器資源,都要經(jīng)過反向代理服務(wù)器,這樣,客戶端發(fā)送的任何有效訪問請(qǐng)求URL里面不但包含代理服務(wù)器的地址,同時(shí)也必須包含后臺(tái)服務(wù)器的地址和路徑,如表1所示的URL格式為本發(fā)明使用的格式化請(qǐng)求表1反向代理后臺(tái)Web后臺(tái)協(xié)議后臺(tái)Web協(xié)議(http:〃服務(wù)器地WF服務(wù)器主服務(wù)器資或者h(yuǎn)ttps)址機(jī)地址或類型源路徑例如https://www.proxy,com/wf/192.168.2.3/0/images/4.jpg解釋如表2所示表26<table>tableseeoriginaldocumentpage7</column></row><table>根據(jù)上表,可以看出上面的例子的意思為通過www.proxy,com使用普通的http方式訪問資源http:〃192.168.2.3/images/4,jpg。下面將描述該技術(shù)的實(shí)現(xiàn)步驟首先,用戶端在瀏覽器的書簽欄或者界面輸入框下輸入的第一條WEB反向代理處理請(qǐng)求。如圖l所示,為初始請(qǐng)求處理流程。從圖中可以看出,交互過程被劃分為3個(gè)實(shí)體瀏覽器、反向代理服務(wù)器(以下簡(jiǎn)稱SSLVPN)、后臺(tái)WEB服務(wù)器。圖1中中間兩條豎線里面的內(nèi)容是本子系統(tǒng)運(yùn)行的過程??蛻舳税l(fā)送HTTP/HTTPS請(qǐng)求,該請(qǐng)求的URL中包含了SSLVPN的地址,同時(shí)包含了被請(qǐng)求的后臺(tái)服務(wù)器的地址,被訪問的后臺(tái)服務(wù)器的資源路徑。SSLVPN截獲到上述請(qǐng)求后,提取出被訪問的后臺(tái)服務(wù)器地址和資源路徑,正常轉(zhuǎn)發(fā)請(qǐng)求。值得注意的是,在作轉(zhuǎn)發(fā)的時(shí)候,外部系統(tǒng)可以在此處添加訪問控制等控制點(diǎn),也就是說和AAAA系統(tǒng)完美結(jié)合。其中,AAAA系統(tǒng)包括認(rèn)證(Authentication):驗(yàn)證用戶的身份與可使用的網(wǎng)絡(luò)服務(wù);授權(quán)(Authorization):依據(jù)認(rèn)證結(jié)果開放網(wǎng)絡(luò)服務(wù)給用戶;訪問控制(AccessControl),根據(jù)授權(quán)對(duì)于相關(guān)資源做出是否允許訪問;計(jì)帳(Accounting):記錄用戶對(duì)各種網(wǎng)絡(luò)服務(wù)的用量,并提供給計(jì)費(fèi)系統(tǒng)。其次,當(dāng)用戶訪問到WEB反向代理后端的頁面以后,再通過瀏覽器中的HTML頁面點(diǎn)擊而發(fā)出請(qǐng)求。其中,該請(qǐng)求一般為某些HTML的TAG,比如A、MG等的某些URI類型的屬性被賦值為相對(duì)路徑或絕對(duì)路徑。對(duì)于相對(duì)路徑而言,瀏覽器在處理這些請(qǐng)求前,將按照當(dāng)前瀏覽網(wǎng)頁作為基準(zhǔn),然后拼接出本請(qǐng)求的URL,一般來講,拼接出來的URL格式和上述的初始請(qǐng)求處理流程相同。比如下面的例子,用戶通過瀏覽器訪問頁面https:〃sslvpn.topsec.com.cn/wf/192.168.1.4/0/php/show.php,艮卩用戶要通過代理服務(wù)器sslvpn.topsec.com.cn訪問http:〃192.168.1.4/php/show.php,服務(wù)器收到請(qǐng)求以后發(fā)回回應(yīng)HTML頁面〈html>〈body〉〈/html>上面的回應(yīng)頁面中包含了一個(gè)圖片和一個(gè)超鏈接,兩個(gè)均為相對(duì)路徑,要求訪問當(dāng)前路徑下的images下面的3.jpg以及當(dāng)前路徑下的login目錄下的login,php;而當(dāng)前目錄是/php,所以很自然被訪問的圖片和超鏈接的路徑為https://sslvpn.topsec.com.cn/wf/192.168.1.4/0/php/images/3.jpg,https://sslvpn.topsec.com.cn/wf/192.168.1.4/0/php/login/login.php該處理巧妙地利用了Web瀏覽器的內(nèi)置特性來確定當(dāng)前頁面里面包含的TAG標(biāo)簽的具體路徑。另外,對(duì)于絕對(duì)路徑而言,瀏覽器在處理這些請(qǐng)求前,將直接發(fā)送請(qǐng)求的URL(不符合WEB反向代理的交互接口),但是同時(shí)附帶了Referer請(qǐng)求頭,而該請(qǐng)求頭本身卻符合接口規(guī)范,該種方式的請(qǐng)求流程如下用戶發(fā)出HTTP/HTTPS請(qǐng)求,請(qǐng)求的URL為https:〃wwwlocal.sslvpn.com/dir/12.html,可以看出,這個(gè)URL沒有包含后臺(tái)WEB服務(wù)器的主機(jī)地址,如果發(fā)送到SSLVPN網(wǎng)關(guān)上,SSLVPN網(wǎng)關(guān)無法獲知要訪問的后臺(tái)服務(wù)器地址,但是根據(jù)HTTP協(xié)議規(guī)范,此時(shí)瀏覽器會(huì)將其上一次訪問過的URL(也就是當(dāng)前請(qǐng)求的父URL)使用Referer請(qǐng)求頭帶到當(dāng)前請(qǐng)求中,此時(shí)SSLVPN網(wǎng)關(guān)就可以根據(jù)這兩項(xiàng)信息判定出需要訪問的后臺(tái)服務(wù)器地址和資源路徑。但是在上面的過程中,即使SSLVPN網(wǎng)關(guān)判定出了被訪問的后臺(tái)服務(wù)器地址和資源路徑以后,也不可以直接轉(zhuǎn)發(fā),接收回應(yīng)并發(fā)送給客戶端,因?yàn)槿绻@樣,瀏覽器的地址欄上面的當(dāng)前URL并沒有變化,仍然為httos:〃loca1.sslvrni.com/dir/12.html,這勢(shì)必影響到了由該請(qǐng)求回應(yīng)的HTML頁面中的其他相對(duì)鏈接的后續(xù)訪問,比如如果有個(gè)鏈接〈AHREF="./c.html">linkc〈/A>,這個(gè)時(shí)候,該鏈接相對(duì)的路徑參照物就是httos:〃local,ssl淮com/dir/12.html,如果是這樣,后續(xù)訪問中就會(huì)丟失后臺(tái)服務(wù)器的地址,此時(shí)轉(zhuǎn)發(fā)功能就出現(xiàn)了異常。為了解決上述的轉(zhuǎn)發(fā)異常問題,引入重定向機(jī)制,此時(shí)并不急于轉(zhuǎn)發(fā),而是向客戶端發(fā)送一個(gè)HTTP302臨時(shí)重定向,該重定向?qū)⒏淖優(yōu)g覽器的當(dāng)前訪問地址,同時(shí)在重定向的請(qǐng)求中包含了SSLVPN本身的地址,后臺(tái)服務(wù)器的地址,后臺(tái)服務(wù)器的資源路徑。當(dāng)客戶端重新發(fā)送上述經(jīng)過重定向的請(qǐng)求以后,進(jìn)行正常轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)前可以訪問控制。上面的處理過程對(duì)于使用GET類型方法的請(qǐng)求工作非常完美,但是如果遇到POST類型就需要額外的工作,如果遇到POST類型的請(qǐng)求,則在發(fā)送重定向請(qǐng)求的時(shí)候,不要直接發(fā)送包含后臺(tái)服務(wù)器地址的拼接URL,而是發(fā)送一個(gè)保存在SSLVPN中的文件的索引,等瀏覽器重新請(qǐng)求該索引的時(shí)候再重新拼接出要訪問的后臺(tái)資源而進(jìn)行轉(zhuǎn)發(fā),同時(shí)該重定向的索引的格式也符合本文定義的URL格式化規(guī)范。依照上述過程,就可以保證在出現(xiàn)絕對(duì)URL時(shí)候不會(huì)出現(xiàn)路徑壞死現(xiàn)象。下面分別結(jié)合實(shí)際例子分別列出GET和POST類型方法下的處理過程。在介紹例子之前,下面給出例子中的網(wǎng)絡(luò)拓?fù)鋱D,如圖3所示,用戶通過loca1.sslvpn.com訪問后臺(tái)資源服務(wù)器remotehost里面的相關(guān)頁面,首先看一個(gè)GET類型請(qǐng)求處理的過程本流程的前提是用戶已經(jīng)成功訪問過一個(gè)符合本文前面描述的格式化URL,這里假定用戶剛剛通過local,sslvpn.com訪問過http://remotehost/some.html,用戶實(shí)際訪問的URL為https:〃loca1.sslvpn.com/wf/remotehost/O/some.html,該URL符合上面描述的URL格式要求。用戶訪問https:〃loca1.sslvpn.com/wf/remotehost/O/some.html的回應(yīng)為〈html>〈body〉〈P>Hello,World〈/P>〈/body>〈/html>上述回應(yīng)中如果用戶點(diǎn)擊了"點(diǎn)擊這里",而該標(biāo)簽對(duì)應(yīng)的地址/2.html是一個(gè)以/開頭的絕對(duì)路徑,瀏覽器將認(rèn)為用戶需要訪問的地址為https:〃local.sslvpn.com/2,html,如果直接訪問該URL,顯然是不可能獲取到相應(yīng)的資源,因?yàn)樵擁撁嫫鋵?shí)是remotehost返回來的。如下所示,用戶訪問2.html頁面的時(shí)候,仍然發(fā)送的是https://local.sslvpn.com/2,html,但是因?yàn)橛脩羰窃趆ttps://local.sslvpn.com/wf/remotehost/O/some.html頁面中點(diǎn)擊的,而該頁面的URL將被設(shè)定為/2.html訪問時(shí)候的Referer請(qǐng)求頭。瀏覽器將發(fā)送下面請(qǐng)求給localhost.sslvpn.com:GET/2,htmlHTTP/1.1User-Agent:Mozilla/5.0(Windows;U;..Referer:https://local.sslvpn.com/wf/remotehost/0/some.htmlHost:192.168.1.39local,sslvpn.com收到該請(qǐng)求后根據(jù)請(qǐng)求里面的URL/2,html和Referer中的相關(guān)信息,可以推測(cè)出用戶想通過local,sslvpn.com訪問http:〃remotehost/2.html,而訪問該資源符合規(guī)范的亂格式應(yīng)該為htps:〃loca1.sslvpn.com/wf/remotehost/0/2.html,這個(gè)URL中的0表示使用GET方式(不發(fā)送任何附加數(shù)據(jù))訪問http服務(wù)器,之所以知道該資源是HTTP也是因?yàn)镽eferer中的some,html本身的值也為0。既然知道用戶真正要訪問的URL,本來可以直接轉(zhuǎn)發(fā)到后臺(tái),然后獲取真實(shí)內(nèi)容發(fā)送給用戶,但是這里不能這樣直接轉(zhuǎn)發(fā),因?yàn)槿绻苯愚D(zhuǎn)發(fā),則當(dāng)前頁面會(huì)很順利返回給客戶端,但是當(dāng)前后臺(tái)資源服務(wù)器的相關(guān)信息就會(huì)完全丟失,用戶只會(huì)看見自己訪問https:〃loca1.sslvpn.com/2,html的時(shí)候返回了正確的頁面,但是從這個(gè)頁面再重新點(diǎn)擊其他的鏈接的時(shí)候,瀏覽器可能無法知道被點(diǎn)擊的資源的確切后臺(tái)位置,比如如果2.html中包含了一個(gè)/introl.html,那么無論introl.html自己的URL還是從它的Referer(2.html)都無法獲取應(yīng)該從那個(gè)服務(wù)器上面去獲取相應(yīng)的資源。為了解該問題,可以將剛才的https:〃loca1.sslvpn.com/wf/remotehost/0/2.html發(fā)給瀏覽器,讓瀏覽器自己重新獲取該URL,這個(gè)方法的好處是瀏覽器自己更改了當(dāng)前頁面的URL,以后基于這個(gè)URL的訪問,比如剛才說的introl.html被訪問的時(shí)候,其Referer會(huì)被正確的標(biāo)示為符合URL規(guī)范格式的瀏覽器重新發(fā)送該URL,繼續(xù)后續(xù)的處理,SSLVPN接到上面的URL后,分解出相應(yīng)的主機(jī)remotehost,遠(yuǎn)程訪問協(xié)議HTTP-GET(0),以及被訪問的資源/2.html,可以做一些權(quán)限判定等操作。如果符合條件,轉(zhuǎn)發(fā)請(qǐng)求到后臺(tái),后臺(tái)獲取到內(nèi)容后,發(fā)送給客戶端。處理結(jié)束,2.html頁面中包含的其他鏈接將會(huì)正確的被本模型重新處理。上面結(jié)合例子說明了GET處理,下面的過程描述了P0ST請(qǐng)求的處理過程前面已經(jīng)介紹了,所謂POST請(qǐng)求,是指在發(fā)送獲取資源的URL的同時(shí),也要發(fā)送相應(yīng)的額外數(shù)據(jù)。這些請(qǐng)求一般是通過HTML頁面中FORM標(biāo)簽提交時(shí)候產(chǎn)生,如下所示,假定用戶起先訪問了URL:〈body>10〈inputtype=〃text"name=〃password">〈inputtype=〃submit">〈/F0RM>〈/body>〈/html>上述回應(yīng)中的頁面,如果用戶點(diǎn)擊了提交按鈕,就會(huì)將該請(qǐng)求發(fā)送給對(duì)應(yīng)的地址/3.html是一個(gè)以/開頭的絕對(duì)路徑,瀏覽器將認(rèn)為用戶需要訪問的地址為https:〃local,sslvpn.com/3,html來的。當(dāng)前該請(qǐng)求和上面描述的GET方式的請(qǐng)求有很大區(qū)別,因?yàn)樵谥囟ㄏ蛱幚碇?,將?huì)把該P(yáng)OST請(qǐng)求重定向?yàn)镚ET請(qǐng)求(所有的重定向新請(qǐng)求均為GET類型)。如下所示,在本發(fā)明中,用戶訪問3.html頁面的時(shí)候,仍然發(fā)送的是https://local.sslvpn.com/3,html,但是因?yàn)橛脩羰窃趆ttps://local.sslvpn.com/wf/remotehost/0/some.html頁面中點(diǎn)擊的,而該頁面的URL將被設(shè)定為/3.html訪問時(shí)候的Referer請(qǐng)求頭。瀏覽器將發(fā)送下面請(qǐng)求給localhost.sslvpn.com:POST/3.htmlHTTP/1.1User-Agent:Mozilla/5.0(Windows;U;..Referer:https://local.sslvpn.com/wf/remotehost/0/some.htmlHost:192.168.1.39User=abc&password=123456local,sslvpn.com收到該請(qǐng)求后根據(jù)請(qǐng)求里面的URL/3,html和Referer中的相關(guān)信息,可以推測(cè)出用戶想通過local,sslvpn.com訪問http:〃remotehost/3.html,同時(shí)要發(fā)送數(shù)據(jù)user=abc&password=123456給后臺(tái)資源服務(wù)器。和GET方式類似,此時(shí)SSLVPN不能直接轉(zhuǎn)發(fā)該請(qǐng)求給后臺(tái)服務(wù)器,此時(shí)仍然需要發(fā)送一個(gè)調(diào)整URL的重定向。但是重定向請(qǐng)求只是將調(diào)整后的URL本身發(fā)送給客戶端,其他的信息無法完全告知客戶端,比如剛才的應(yīng)用數(shù)據(jù)部分。這里本發(fā)明用如下方法處理,SSLVPN將客戶端發(fā)送來的URL/3,html,從Referer頭獲取的后臺(tái)主機(jī)地址remotehost,應(yīng)用數(shù)據(jù)user=abc=&password=123456,以及其他客戶端發(fā)送來的數(shù)據(jù)保存在一個(gè)臨時(shí)文件sslvpnXXXXXX中,而給客戶端僅僅發(fā)送如下的重定向URL:https://local.sslvpn.com/wf/remotehost/3/topsecwebforwardindex=sslvpnXXXXXX,該URL格式也符合前面定義的URL格式,這里的3表示是一個(gè)POST類型的HTTP請(qǐng)求(如果是4則表示是HTTPS請(qǐng)求),后面同時(shí)加入了保存的文件的索引文件名??蛻舳耸盏皆撝囟ㄏ虻腢RL后,重新發(fā)起請(qǐng)求,此時(shí)客戶端發(fā)送的是一個(gè)GET請(qǐng)求,到了SSLVPN,SSLVPN根據(jù)該URL中文件的名稱獲取到真正的請(qǐng)求,也就是說,SSLVPN會(huì)發(fā)送http:〃remotehost/3.html到后臺(tái)去,當(dāng)然發(fā)送該請(qǐng)求的時(shí)候使用POST方法,并且攜帶應(yīng)用數(shù)據(jù)User=abc=&password=123456到后臺(tái)。在上面解析完成URL時(shí)候,可以加用戶權(quán)限控制等檢查,和AAAA系統(tǒng)對(duì)接。和GET請(qǐng)求類似,后面就可以保證正常的應(yīng)用訪問。綜上所述,依照本發(fā)明的實(shí)現(xiàn)WEB反向代理的方法,解決反向代理服務(wù)器正確標(biāo)識(shí)每個(gè)請(qǐng)求的目的內(nèi)部WEB服務(wù)器地址,目的請(qǐng)求協(xié)議(HTTP/HTTPS)、方法類型(GET/POST)、以及目的資源的正確路徑,從而做到正常轉(zhuǎn)發(fā);在相對(duì)URL請(qǐng)求的情況下通過定義的規(guī)范化URL以及瀏覽器本身的內(nèi)在特性完成客戶端正確識(shí)別目標(biāo)URL的;而在絕對(duì)URL請(qǐng)求的情況下則是通過交互(重定向)來完成URL重新調(diào)整;并且在后一情況下,同時(shí)包含了兩種不盡相同的方式來完成該任務(wù),一個(gè)是GET請(qǐng)求的簡(jiǎn)單重定向方式來實(shí)現(xiàn),另一個(gè)POST請(qǐng)求方式,該方式在SSLVPN反向代理服務(wù)器上面保存臨時(shí)數(shù)據(jù),然后重新定向,完成正確轉(zhuǎn)發(fā),提高轉(zhuǎn)發(fā)效率,在不必要的地方盡量不要作頁面內(nèi)容的替換工作。本發(fā)明中所有實(shí)現(xiàn)都是對(duì)于HTTP請(qǐng)求,響應(yīng)頭進(jìn)行加工處理,沒有進(jìn)行任何HTML頁面內(nèi)部的替換,無論是格式化的URL,還是相對(duì)URL處理,還是基于重定向的絕對(duì)URL格式處理,均可以在Web服務(wù)器上面高效的完成。以上是為了使本領(lǐng)域普通技術(shù)人員理解本發(fā)明,而對(duì)本發(fā)明所進(jìn)行的詳細(xì)描述,但可以想到,在不脫離本發(fā)明的權(quán)利要求所涵蓋的范圍內(nèi)還可以做出其它的變化和修改,這些變化和修改均在本發(fā)明的保護(hù)范圍內(nèi)。權(quán)利要求一種實(shí)現(xiàn)WEB反向代理的方法,其特征在于,當(dāng)用戶端在瀏覽器的書簽欄或者界面輸入框下輸入的第一條WEB反向代理處理請(qǐng)求后,包括下列步驟客戶端發(fā)送HTTP/HTTPS請(qǐng)求,該請(qǐng)求的統(tǒng)一資源定位符URL中包含反向代理服務(wù)器SSLVPN的地址、被訪問的后臺(tái)服務(wù)器的地址以及被訪問的后臺(tái)服務(wù)器的資源路徑;反向代理服務(wù)器SSLVPN截獲到上述請(qǐng)求后,提取出被訪問的后臺(tái)服務(wù)器地址和資源路徑,正常轉(zhuǎn)發(fā)請(qǐng)求。2.如權(quán)利要求1所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,包括下列步驟當(dāng)用戶訪問到WEB反向代理后端的頁面以后,再通過瀏覽器中的HTML頁面點(diǎn)擊而發(fā)出請(qǐng)求;該請(qǐng)求中的HTML的標(biāo)記或標(biāo)簽中的統(tǒng)一資源定位符類型屬性被賦值為相對(duì)路徑或絕對(duì)路徑。3.如權(quán)利要求2所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,在所述統(tǒng)一資源定位符類型屬性被賦值為相對(duì)路徑時(shí),瀏覽器在處理該請(qǐng)求前,將按照當(dāng)前瀏覽網(wǎng)頁作為基準(zhǔn),然后拼接出本請(qǐng)求的統(tǒng)一資源定位符。4.如權(quán)利要求2所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,在所述統(tǒng)一資源定位符類型屬性被賦值為絕對(duì)路徑時(shí),瀏覽器在處理該請(qǐng)求前,將直接發(fā)送請(qǐng)求的URL,該URL不符合WEB反向代理的交互接口規(guī)范,但附帶了符合該交互接口規(guī)范的Referer請(qǐng)求頭;根據(jù)HTTP協(xié)議規(guī)范瀏覽器將當(dāng)前請(qǐng)求的父URL使用Referer請(qǐng)求頭帶到當(dāng)前請(qǐng)求中;反向代理服務(wù)器SSLVPN根據(jù)這兩項(xiàng)信息判定出被訪問的后臺(tái)服務(wù)器地址和資源路徑,以正常轉(zhuǎn)發(fā)請(qǐng)求。5.如權(quán)利要求4所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,在該請(qǐng)求為使用GET類型方法的情況下,在進(jìn)行轉(zhuǎn)發(fā)之前,包括下列步驟向客戶端發(fā)送一個(gè)HTTP302臨時(shí)重定向,該重定向?qū)⒏淖優(yōu)g覽器的當(dāng)前訪問地址,同時(shí)在重定向的請(qǐng)求中包含了SSLVPN本身的地址,后臺(tái)服務(wù)器的地址,后臺(tái)服務(wù)器的資源路徑。當(dāng)客戶端重新發(fā)送上述經(jīng)過重定向的請(qǐng)求以后,進(jìn)行正常轉(zhuǎn)發(fā)。6.如權(quán)利要求4所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,在該請(qǐng)求為使用POST類型方法的情況下,在進(jìn)行轉(zhuǎn)發(fā)之前,包括下列步驟在發(fā)送重定向請(qǐng)求時(shí),先發(fā)送一個(gè)保存在SSLVPN中的文件索引,在瀏覽器重新請(qǐng)求該索引時(shí),再重新拼接出要訪問的后臺(tái)資源而進(jìn)行轉(zhuǎn)發(fā),同時(shí)該重定向的索引格式符合預(yù)定的URL格式。7.如權(quán)利要求1至6中任一項(xiàng)所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,所述URL格式為協(xié)議http或者h(yuǎn)ttps:〃反向代理服務(wù)器地址/WF/后臺(tái)WEB服務(wù)器主機(jī)地址/后臺(tái)協(xié)議類型/后臺(tái)WEB服務(wù)器資源路徑。8.如權(quán)利要求1至6中任一項(xiàng)所述的實(shí)現(xiàn)WEB反向代理的方法,其特征在于,在進(jìn)行轉(zhuǎn)發(fā)時(shí),外部系統(tǒng)添加訪問控制的控制點(diǎn),即與AAAA系統(tǒng)結(jié)合,所述AAAA系統(tǒng)包括認(rèn)證Authentication:驗(yàn)證用戶的身份與可使用的網(wǎng)絡(luò)服務(wù);授權(quán)Authorization:依據(jù)認(rèn)證結(jié)果開放網(wǎng)絡(luò)服務(wù)給用戶;訪問控制AccessControl,根據(jù)授權(quán)對(duì)于相關(guān)資源做出是否允許訪問;計(jì)帳Accounting:記錄用戶對(duì)各種網(wǎng)絡(luò)服務(wù)的用量,并提供給計(jì)費(fèi)系統(tǒng)。全文摘要本發(fā)明提供一種實(shí)現(xiàn)WEB反向代理的方法,其中,當(dāng)用戶端在瀏覽器的書簽欄或者界面輸入框下輸入的第一條WEB反向代理處理請(qǐng)求后,包括下列步驟客戶端發(fā)送HTTP/HTTPS請(qǐng)求,該請(qǐng)求的統(tǒng)一資源定位符URL中包含反向代理服務(wù)器SSLVPN的地址、被訪問的后臺(tái)服務(wù)器的地址以及被訪問的后臺(tái)服務(wù)器的資源路徑;反向代理服務(wù)器SSLVPN截獲到上述請(qǐng)求后,提取出被訪問的后臺(tái)服務(wù)器地址和資源路徑,正常轉(zhuǎn)發(fā)請(qǐng)求。本發(fā)明中所有實(shí)現(xiàn)都是對(duì)于HTTP請(qǐng)求,響應(yīng)頭進(jìn)行加工處理,沒有進(jìn)行任何HTML頁面內(nèi)部的替換,通過格式化的URL,可以在Web服務(wù)器上面高效的完成相對(duì)URL處理,以及基于重定向的絕對(duì)URL格式處理。文檔編號(hào)H04L29/08GK101753606SQ20081022797公開日2010年6月23日申請(qǐng)日期2008年12月3日優(yōu)先權(quán)日2008年12月3日發(fā)明者劉曉瑞申請(qǐng)人:北京天融信科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
白水县| 调兵山市| 台江县| 阿巴嘎旗| 灵宝市| 曲麻莱县| 金塔县| 阳曲县| 新野县| 成安县| 五河县| 民勤县| 金平| 望都县| 抚松县| 禹城市| 加查县| 团风县| 喀什市| 富平县| 溆浦县| 淳化县| 江西省| 鸡东县| 深州市| 玛沁县| 池州市| 宁城县| 玛纳斯县| 海口市| 荔波县| 胶南市| 平陆县| 临颍县| 略阳县| 石城县| 海城市| 洛南县| 银川市| 井冈山市| 化德县|