的預(yù)處理業(yè)務(wù)服務(wù)器連接。
[0038]在本實(shí)施例中,從預(yù)處理業(yè)務(wù)服務(wù)器列表中選取預(yù)處理業(yè)務(wù)服務(wù)器的步驟可具體為:
[0039]遍歷預(yù)處理業(yè)務(wù)服務(wù)器列表中包含的預(yù)處理業(yè)務(wù)標(biāo)識(shí),在與遍歷到的預(yù)處理業(yè)務(wù)標(biāo)識(shí)對(duì)應(yīng)的預(yù)處理業(yè)務(wù)服務(wù)器中進(jìn)行選取。
[0040]也就是說(shuō),若開發(fā)人員預(yù)先在預(yù)處理服務(wù)器列表中配置了了 N種預(yù)處理業(yè)務(wù),并為每種預(yù)處理業(yè)務(wù)部署了相應(yīng)的一臺(tái)或多臺(tái)預(yù)處理業(yè)務(wù)服務(wù)器,則在接收到網(wǎng)頁(yè)訪問(wèn)請(qǐng)求時(shí),可根據(jù)預(yù)處理服務(wù)器列表為每種預(yù)處理業(yè)務(wù)中選擇一臺(tái)或多臺(tái)預(yù)處理業(yè)務(wù)服務(wù)器來(lái)對(duì)該網(wǎng)頁(yè)訪問(wèn)請(qǐng)求進(jìn)行預(yù)處理。
[0041]步驟S106,將請(qǐng)求參數(shù)信息發(fā)送至選取的預(yù)處理業(yè)務(wù)服務(wù)器,并接收其返回的處理結(jié)果。
[0042]在本實(shí)施例中,可將前述提取的請(qǐng)求參數(shù)信息以UDP的方式發(fā)送至前述選取的預(yù)處理業(yè)務(wù)服務(wù)器。需要說(shuō)明的是,預(yù)處理業(yè)務(wù)服務(wù)器列表中可以定義發(fā)送請(qǐng)求參數(shù)信息的順序和同步/異步方式。如前例中,在某個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的業(yè)務(wù)處理過(guò)程中,漏洞檢測(cè)的結(jié)果是執(zhí)行數(shù)據(jù)加密和編碼轉(zhuǎn)換的前置條件,則可在預(yù)處理業(yè)務(wù)服務(wù)器列表中定義與該網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的url對(duì)應(yīng)的預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送順序?yàn)?漏洞檢測(cè)服務(wù)器優(yōu)先,且為同步發(fā)送(即只有在接收到返回的處理結(jié)果之后才會(huì)繼續(xù)向其他預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送請(qǐng)求參數(shù)信息);后續(xù)為數(shù)據(jù)加密服務(wù)器和編碼轉(zhuǎn)換服務(wù)器且為異步發(fā)送(即可在不接收到處理結(jié)果的情況下向其他預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送請(qǐng)求參數(shù)信息)。
[0043]在本實(shí)施例中,接收預(yù)處理業(yè)務(wù)服務(wù)器返回的處理結(jié)果的步驟之前還包括:獲取網(wǎng)頁(yè)訪問(wèn)請(qǐng)求對(duì)應(yīng)的請(qǐng)求對(duì)象,對(duì)請(qǐng)求對(duì)象加鎖,并緩存其對(duì)應(yīng)的上下文,并為請(qǐng)求對(duì)象注冊(cè)處理結(jié)果接收事件。
[0044]例如,在nginx框架中,可將request對(duì)象加鎖,然后將其在內(nèi)存中對(duì)應(yīng)的上下文數(shù)據(jù)緩存,然后為請(qǐng)求對(duì)象注冊(cè)處理結(jié)果接收事件。處理結(jié)果接收事件即為web應(yīng)用服務(wù)器在接收到預(yù)處理業(yè)務(wù)服務(wù)器返回的處理結(jié)果時(shí),觸發(fā)的系統(tǒng)事件。處理結(jié)果接收事件可在注冊(cè)時(shí)與相應(yīng)的請(qǐng)求對(duì)象建立映射關(guān)系(可通過(guò)請(qǐng)求對(duì)象的標(biāo)識(shí)信息建立映射,例如,可在發(fā)送的請(qǐng)求參數(shù)信息中包含請(qǐng)求對(duì)象的標(biāo)識(shí)信息,相應(yīng)返回的處理結(jié)果中也包含該標(biāo)識(shí)信息,則觸發(fā)的處理結(jié)果接收事件中也包含該標(biāo)識(shí)信息)。
[0045]nginx框架中,若某個(gè)request對(duì)象被加鎖,且其上下文被緩存之后,則其處理進(jìn)程則切換至其他request對(duì)象進(jìn)行處理。也就是說(shuō),web應(yīng)用服務(wù)器在向預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送請(qǐng)求參數(shù)信息之后,可暫停處理與該請(qǐng)求參數(shù)信息對(duì)應(yīng)的網(wǎng)頁(yè)訪問(wèn)請(qǐng)求,而切換至處理其他網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的狀態(tài),從而實(shí)現(xiàn)了并發(fā)處理多個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求。
[0046]例如,若nginx應(yīng)用服務(wù)器接收到3個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求,則會(huì)異步處理該3個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求,即處理器會(huì)為每個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求分配計(jì)算資源。若某個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求在處理過(guò)程中,已以同步的方式向預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送了請(qǐng)求參數(shù)信息,進(jìn)入等待接收返回的處理結(jié)果的阻塞狀態(tài),則可將該網(wǎng)頁(yè)訪問(wèn)請(qǐng)求對(duì)應(yīng)的請(qǐng)求對(duì)象加鎖,并將該請(qǐng)求對(duì)象的上下文緩存,即處理器停止對(duì)該請(qǐng)求對(duì)象對(duì)應(yīng)的網(wǎng)頁(yè)訪問(wèn)請(qǐng)求進(jìn)行處理,而將計(jì)算資源切換至處理其他2個(gè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求。使得web應(yīng)用服務(wù)器的處理器資源得到最大化利用而不至于造成計(jì)算資源的浪費(fèi)。
[0047]步驟S108,判斷返回的處理結(jié)果是否異常,若是,則執(zhí)行步驟SllO:跳轉(zhuǎn)到錯(cuò)誤頁(yè)面。
[0048]錯(cuò)誤頁(yè)面可以是501頁(yè)面(http協(xié)議中編號(hào)501錯(cuò)誤的頁(yè)面,標(biāo)識(shí)服務(wù)器內(nèi)部錯(cuò)誤),也可以是包含處理結(jié)果的頁(yè)面。例如,若前述的漏洞檢測(cè)服務(wù)器若檢測(cè)到網(wǎng)頁(yè)訪問(wèn)請(qǐng)求中的提交數(shù)據(jù)中包含SQL攻擊的可疑字符串,則可在跳轉(zhuǎn)到包含警告信息和法律條款的錯(cuò)誤頁(yè)面。若發(fā)起網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的帳戶為管理員帳戶,則可跳轉(zhuǎn)到包含日志信息的錯(cuò)誤頁(yè)面,方便管理員測(cè)試。
[0049]在本實(shí)施例中,若返回的處理結(jié)果無(wú)異常,則執(zhí)行步驟S112:獲取與處理結(jié)果對(duì)應(yīng)的處理結(jié)果接收事件對(duì)應(yīng)的請(qǐng)求對(duì)象,將請(qǐng)求對(duì)象解鎖,并從緩存中提取其對(duì)應(yīng)的上下文。
[0050]如前例中,基于nginx框架的web應(yīng)用服務(wù)器在接收到預(yù)處理業(yè)務(wù)服務(wù)器返回的處理結(jié)果時(shí),會(huì)觸發(fā)處理結(jié)果接收事件,可在前述注冊(cè)該處理結(jié)果接收事件時(shí)定義其對(duì)應(yīng)的回調(diào)事件處理函數(shù),然后在觸發(fā)處理結(jié)果接收事件時(shí)調(diào)用該事件處理函數(shù),在該事件處理函數(shù)中獲取處理結(jié)果接收事件對(duì)應(yīng)的請(qǐng)求對(duì)象,將請(qǐng)求對(duì)象解鎖。在本實(shí)施例中,可根據(jù)請(qǐng)求對(duì)象的標(biāo)識(shí)信息獲取處理結(jié)果接收事件對(duì)應(yīng)的請(qǐng)求對(duì)象,將其解鎖后即可在緩存中提取其對(duì)應(yīng)的上下文數(shù)據(jù)。請(qǐng)求對(duì)象被解鎖之后,web應(yīng)用服務(wù)器即可對(duì)該已解鎖的請(qǐng)求對(duì)象進(jìn)行后續(xù)的處理。
[0051]需要說(shuō)明的是,該web應(yīng)用服務(wù)器對(duì)該請(qǐng)求對(duì)象進(jìn)行后續(xù)的處理時(shí),可繼續(xù)向其他預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送請(qǐng)求參數(shù)信息,然后再將該請(qǐng)求對(duì)象加鎖;也可直接調(diào)用預(yù)先定義的業(yè)務(wù)處理函數(shù)(即以嵌入的方式與web應(yīng)用框架綁定的業(yè)務(wù)處理函數(shù),也就是說(shuō),可與傳統(tǒng)技術(shù)中網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的處理方法結(jié)合)。
[0052]在一個(gè)實(shí)施例中,將緩存請(qǐng)求對(duì)象對(duì)應(yīng)的上下文的步驟之后還包括:檢測(cè)網(wǎng)頁(yè)訪問(wèn)請(qǐng)求對(duì)應(yīng)的請(qǐng)求對(duì)象是否被回收注銷,若是,移除注冊(cè)的與請(qǐng)求對(duì)象對(duì)應(yīng)的處理結(jié)果接收事件。
[0053]在nginx框架中,緩存的request對(duì)象的上下文通常具有生命周期,即若接收返回的處理結(jié)果等待的時(shí)間過(guò)長(zhǎng),則其不會(huì)永久緩存在web應(yīng)用服務(wù)器的內(nèi)存中,可能會(huì)被web應(yīng)用服務(wù)器的垃圾收集機(jī)制回收注銷掉??稍趓equest對(duì)象的注銷事件的回調(diào)函數(shù)中移除注冊(cè)的與所述請(qǐng)求對(duì)象對(duì)應(yīng)的處理結(jié)果接收事件。移除該處理結(jié)果接收事件后,若web應(yīng)用服務(wù)器在后續(xù)接收到與該請(qǐng)求對(duì)象對(duì)應(yīng)的處理結(jié)果(例如包含該請(qǐng)求對(duì)象的標(biāo)識(shí)信息的處理結(jié)果)時(shí),不會(huì)觸發(fā)相應(yīng)的處理結(jié)果接收事件,即不會(huì)有后續(xù)對(duì)request對(duì)象的進(jìn)一步處理。
[0054]在本實(shí)施例中,還可預(yù)設(shè)超時(shí)閾值,若向預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送請(qǐng)求參數(shù)信息后,在超時(shí)閾值的時(shí)間內(nèi)未收到返回的處理結(jié)果,則可跳轉(zhuǎn)至錯(cuò)誤頁(yè)面。
[0055]在一個(gè)應(yīng)用場(chǎng)景中,該方法的運(yùn)行可基于攔截器對(duì)象。例如,可在web應(yīng)用的攔截器對(duì)象中運(yùn)行該方法。在網(wǎng)頁(yè)訪問(wèn)請(qǐng)求在傳遞給控制器對(duì)象之前,先由攔截器對(duì)象對(duì)其進(jìn)行預(yù)處理,執(zhí)行上述步驟,若處理結(jié)果無(wú)異常,則可結(jié)束攔截器對(duì)象的運(yùn)行,而將網(wǎng)頁(yè)訪問(wèn)請(qǐng)求移交給攔截器對(duì)象進(jìn)行處理。
[0056]以攔截器對(duì)象的方式運(yùn)行該方法,可將固定的業(yè)務(wù)處理邏輯定義在web應(yīng)用框架的控制器對(duì)象中,而將提取網(wǎng)頁(yè)訪問(wèn)請(qǐng)求中的請(qǐng)求參數(shù)信息、選擇預(yù)處理業(yè)務(wù)服務(wù)器和執(zhí)行向預(yù)處理業(yè)務(wù)服務(wù)器發(fā)送請(qǐng)求參數(shù)信息等任務(wù)定義在攔截器對(duì)象中,且可根據(jù)業(yè)務(wù)需求的不同,預(yù)先定義多種類型的攔截器對(duì)象。若開發(fā)人員希望切換提取的請(qǐng)求參數(shù)信息的類型或者切換選擇預(yù)處理業(yè)務(wù)服務(wù)器的負(fù)載均衡算法,則可在通過(guò)切換攔截器對(duì)象運(yùn)行該方法來(lái)快速實(shí)現(xiàn),且在遇到異常時(shí),也可切換回原攔截器對(duì)象,從而降低了代碼之間的耦合度,方便部署和維護(hù)。
[0057]在一個(gè)實(shí)施例中,如圖3所示,一種網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的處理裝置,包括參數(shù)提取模塊102、業(yè)務(wù)選取模塊104、處理結(jié)果接收模塊106、處理結(jié)果分析模塊108和錯(cuò)誤頁(yè)面提示模塊110,其中:
[0058]一種網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的處理裝置,其特征在于,包括:
[0059]參數(shù)提取模塊102,用于獲取上傳的網(wǎng)頁(yè)訪問(wèn)請(qǐng)求,提取網(wǎng)頁(yè)訪問(wèn)請(qǐng)求中提交的請(qǐng)求參數(shù)信息。
[0060]業(yè)務(wù)選取模塊104,用于獲取預(yù)處理業(yè)務(wù)服務(wù)器列表,并從中選取預(yù)處理業(yè)務(wù)服務(wù)器。
[0061]處理結(jié)果接收模塊106,用于將請(qǐng)求參數(shù)信息發(fā)送至選取的預(yù)處理業(yè)務(wù)服務(wù)器,并接收其返回的處理結(jié)果。
[0062]處理結(jié)果分析模塊108,用于判斷返回的處理結(jié)果是否異常。
[0063]錯(cuò)誤頁(yè)面提示模塊110,用于在處理結(jié)果異常時(shí)跳轉(zhuǎn)到錯(cuò)誤頁(yè)面。
[0064]在本實(shí)施例中,參數(shù)提取模塊102還用于獲取網(wǎng)頁(yè)訪問(wèn)請(qǐng)求的請(qǐng)求類型,判斷請(qǐng)求類型是否為POST,若是,則調(diào)用POST事件回調(diào)函數(shù),通過(guò)POST事件回調(diào)函數(shù)提取網(wǎng)頁(yè)訪問(wèn)請(qǐng)求中提交的請(qǐng)求參數(shù)信息。
[0065]在本實(shí)施例中,處理結(jié)果接收模塊106還用于獲取網(wǎng)頁(yè)訪問(wèn)請(qǐng)求對(duì)應(yīng)的請(qǐng)求對(duì)象,對(duì)請(qǐng)求對(duì)象加鎖,并緩存其對(duì)應(yīng)的上下文,并為所述請(qǐng)求對(duì)象注冊(cè)處理結(jié)果接收事件。
[0066]在本實(shí)施例中,如圖4所示,網(wǎng)頁(yè)訪