網頁訪問請求的處理方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及網絡技術領域,特別是涉及一種網頁訪問請求的處理方法及裝置。
【背景技術】
[0002]傳統(tǒng)技術中的web應用框架通常采用MVC(Model-View-Control、模型-視圖-控制器模式)的設計模式的設計。其中,視圖層代碼用于展示輸入窗口和處理結果的用戶界面,模型層代碼用于存儲和讀取業(yè)務數(shù)據(jù),而控制層代碼則用于執(zhí)行具體的業(yè)務邏輯,例如,可在控制層依次調用多個業(yè)務處理函數(shù)得到返回處理結果,然后存儲到模型層。每個業(yè)務處理函數(shù)中預先定義有相應的業(yè)務處理算法,業(yè)務處理算法則決定了具體的業(yè)務邏輯的執(zhí)行。
[0003]例如,若需要在nginx(—款輕量級的Web服務器/反向代理服務器及電子郵件代理服務器,并在一個BSD-1ike協(xié)議下發(fā)行,由俄羅斯的程序設計師Igor Sysoev所開發(fā),占有內存少,并發(fā)能力強)框架中先對web請求進行漏洞檢測(例如,檢查請求中是否包含SQL攻擊或其他攻擊腳本),然后再對web請求提交的數(shù)據(jù)進行處理,則在控制器中先調用相應的漏洞檢測函數(shù),若返回結果為安全,則再調用后續(xù)的業(yè)務處理函數(shù)對web請求提交的數(shù)據(jù)進行處理。
[0004]然而,由于傳統(tǒng)技術中業(yè)務處理函數(shù)內嵌在即通過代碼定義在web應用框架中,若在對業(yè)務處理函數(shù)中的業(yè)務處理算法進行更新升級(例如更新漏洞檢測的檢測規(guī)則等)后出現(xiàn)程序錯誤,則可能造成整個web應用的異常終止,從而導致可靠性不足。
【發(fā)明內容】
[0005]基于此,有必要提供一種能夠提高可靠性的網頁訪問請求的處理方法。
[0006]一種網頁訪問請求的處理方法,包括:
[0007]獲取上傳的網頁訪問請求,提取網頁訪問請求中提交的請求參數(shù)信息;
[0008]獲取預處理業(yè)務服務器列表,并從中選取預處理業(yè)務服務器;
[0009]將所述請求參數(shù)信息發(fā)送至所述選取的預處理業(yè)務服務器,并接收其返回的處理結果;
[0010]判斷所述返回的處理結果是否異常,若是,則跳轉到錯誤頁面。
[0011]此外,還有必要提供一種能夠提高可靠性的網頁訪問請求的處理裝置。
[0012]一種網頁訪問請求的處理裝置,其特征在于,包括:
[0013]參數(shù)提取模塊,用于獲取上傳的網頁訪問請求,提取網頁訪問請求中提交的請求參數(shù)信息;
[0014]業(yè)務選取模塊,用于獲取預處理業(yè)務服務器列表,并從中選取預處理業(yè)務服務器;
[0015]處理結果接收模塊,用于將所述請求參數(shù)信息發(fā)送至所述選取的預處理業(yè)務服務器,并接收其返回的處理結果;
[0016]處理結果分析模塊,用于判斷所述返回的處理結果是否異常;
[0017]錯誤頁面提示模塊,用于在處理結果異常時跳轉到錯誤頁面。
[0018]上述網頁訪問請求的處理方法及裝置中,將具體處理業(yè)務邏輯的業(yè)務處理算法的執(zhí)行任務放置在可與web應用服務器獨立的預處理業(yè)務服務器上,若業(yè)務處理算法進行更新,并不需要重新部署web應用服務器,web應用服務器可在不宕機的情況下持續(xù)地處理用戶的網頁訪問請求。預處理業(yè)務服務器在執(zhí)行業(yè)務處理算法時,若出現(xiàn)致命異常,也不會導致web應用服務器的崩潰,從而提高了可靠性。
[0019]同時,將業(yè)務處理算法的執(zhí)行放置于獨立的預處理業(yè)務服務器上,使得計算任務可在多臺預處理業(yè)務服務器上執(zhí)行,避免了 web應用服務器在高并發(fā)環(huán)境下執(zhí)行業(yè)務處理算法時計算任務過重的問題,提高了 web應用服務器的響應速度。
【附圖說明】
[0020]圖1為一個實施例中網頁訪問請求的處理方法的流程圖;
[0021]圖2為一個實施例中web應用服務器與預處理業(yè)務服務器的拓撲結構圖;
[0022]圖3為一個實施例中網頁訪問請求的處理裝置的結構示意圖;
[0023]圖4為另一個實施例中網頁訪問請求的處理裝置的結構示意圖;
[0024]圖5為一個實施例中運行網頁訪問請求的處理方法的服務器運行環(huán)境示意圖。
【具體實施方式】
[0025]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0026]除非上下文另有特定清楚的描述,本發(fā)明中的元件和組件,數(shù)量既可以單個的形式存在,也可以多個的形式存在,本發(fā)明并不對此進行限定。本發(fā)明中的步驟雖然用標號進行了排列,但并不用于限定步驟的先后次序,除非明確說明了步驟的次序或者某步驟的執(zhí)行需要其他步驟作為基礎,否則步驟的相對次序是可以調整的??梢岳斫?,本文中所使用的術語“和/或”涉及且涵蓋相關聯(lián)的所列項目中的一者或一者以上的任何和所有可能的組口 ο
[0027]在一個實施例中,如圖1所示,一種網頁訪問請求的處理方法,該方法可依賴于計算機程序,能夠運行于基于馮洛伊曼體系的計算機系統(tǒng)上。該計算機系統(tǒng)可以是web應用服務器,例如nginx應用服務器。
[0028]在本實施例中,該方法包括:
[0029]步驟S102,獲取上傳的網頁訪問請求,提取網頁訪問請求中提交的請求參數(shù)信息。
[0030]網頁訪問請求即用戶通過在瀏覽器地址欄輸入網頁地址或在網頁上點擊鏈接和按鈕而向web應用服務器發(fā)起的訪問請求。由網頁訪問請求中提取的請求參數(shù)信息則包括請求參數(shù)(例如header信息、method信息、url信息和host信息中的至少一種)或提交數(shù)據(jù)(例如用戶在網頁上填寫表單后以POST方式提交的表單數(shù)據(jù))。
[0031]web應用服務器在接收到網頁訪問請求后通常根據(jù)提取的請求參數(shù)信息將其封裝成請求對象。例如,在nginx框架中,網頁訪問請求被封裝成request對象;在j2ee框架中,網頁訪問請求則被封裝為httpRequest對象中。
[0032]在本實施例中,提取網頁訪問請求中提交的請求參數(shù)信息的步驟包括:獲取網頁訪問請求的請求類型,判斷請求類型是否為POST,若是,則調用POST事件回調函數(shù),通過POST事件回調函數(shù)提取網頁訪問請求中提交的請求參數(shù)信息。
[0033]例如,在nginx框架中,web應用服務器在接收到POST類型的網頁訪問請求(即http頭部信息中的method屬性值為POST)后即會觸發(fā)POST事件,該POST事件被觸發(fā)后即會調用相應的POST事件回調函數(shù)。可預先在POST事件回調函數(shù)中定義提取請求參數(shù)信息的代碼。當POST事件觸發(fā)時,則可自動執(zhí)行該POST事件回調函數(shù)中定義的代碼來提取網頁訪問請求中提交的請求參數(shù)信息。
[0034]步驟S104,獲取預處理業(yè)務服務器列表,并從中選取預處理業(yè)務服務器。
[0035]預處理業(yè)務即為對網頁訪問請求進行與web應用的運行維護相關的需要對請求預先進行處理的業(yè)務。例如,可以是漏洞檢測(對請求中是否包含攻擊性腳本或代碼進行檢測,為后續(xù)處理提供安全保證)、數(shù)據(jù)加密(對加密數(shù)據(jù)進行解密,方便后續(xù)處理)、編碼轉換(對請求中的數(shù)據(jù)的編碼格式進行預先轉換,方便后續(xù)處理)、日志統(tǒng)計及分析(對web應用接收請求的日志進行統(tǒng)計記錄和分析)以及壓縮解壓縮(對請求中包含的gzip類型的數(shù)據(jù)進行壓縮和解壓縮)等。
[0036]預處理業(yè)務服務器即為處理相應的預處理業(yè)務邏輯的計算機設備。如圖2所示,web應用服務器10可與多種預處理業(yè)務服務器連接。例如,圖2對應的應用場景中,預處理業(yè)務服務器可包括與web應用服務器連接的漏洞檢測服務器20、數(shù)據(jù)加密服務器30和編碼轉換服務器40。
[0037]其中,預處理業(yè)務服務器列表中包含預處理業(yè)務標識,所述預處理業(yè)務標識對應預處理業(yè)務服務器,每種業(yè)務標識對應的預處理業(yè)務服務器也可以有多個,例如,可具有多個業(yè)務標識,分別對應日志統(tǒng)計及分析、漏洞檢測、壓縮解壓縮等具體的預處理業(yè)務。而漏洞檢測服務器20也可以有多個,web應用服務器在根據(jù)預處理業(yè)務服務器列表選擇漏洞檢測服務器20中可在負載均衡的前提下選取漏洞檢測服務器。在其他應用場景中,預處理業(yè)務的業(yè)務標識也不限于上述的漏洞檢測、數(shù)據(jù)加密、編碼轉換、日志統(tǒng)計及分析以及壓縮解壓縮,web應用服務器10還可與其他類型