能夠由客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器的用戶經(jīng)由超文本傳輸協(xié)議(HTTP)或安全超文本傳輸協(xié)議(HTTPS)瀏覽的許多網(wǎng)站是在服務(wù)器計算機(jī)上主控的基于網(wǎng)絡(luò)的應(yīng)用。這些應(yīng)用經(jīng)由網(wǎng)絡(luò)瀏覽器顯露它們的用戶界面,并且沒有安裝在客戶端計算機(jī)上。應(yīng)用依賴應(yīng)用服務(wù)器而不是客戶端來實現(xiàn)應(yīng)用的特征,并且在把服務(wù)器上的數(shù)據(jù)傳輸?shù)娇蛻舳酥肮芾韺?shù)據(jù)的訪問。一旦特征已經(jīng)被顯露,并且數(shù)據(jù)通過連接被傳輸?shù)娇蛻舳?,客戶端就沒有訪問點來控制特征或數(shù)據(jù)。對于客戶端處的用戶輸入的數(shù)據(jù)也同樣是如此。即使客戶端計算機(jī)的管理員希望限制或約束對這些特征和數(shù)據(jù)中的某些的訪問,用戶也能夠訪問應(yīng)用的所有顯露的特征和所有數(shù)據(jù)。
附圖說明
圖1是根據(jù)本公開的示例的、包括具有網(wǎng)絡(luò)瀏覽器的客戶端計算機(jī)的系統(tǒng)的示意性框圖,所述網(wǎng)絡(luò)瀏覽器具有策略控制特征。
圖2是根據(jù)本公開的示例的、包括具有網(wǎng)絡(luò)瀏覽器的客戶端計算機(jī)的系統(tǒng)的另一示意性框圖,所述網(wǎng)絡(luò)瀏覽器具有策略控制特征。
圖3是根據(jù)本公開的示例的、圖2的客戶端計算機(jī)的架構(gòu)的示意性框圖。
圖4是根據(jù)本公開的示例的、用于使用客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器實施用于在服務(wù)器計算機(jī)上執(zhí)行的基于HTTP的應(yīng)用的預(yù)定義管理策略的方法的流程圖。
圖5是根據(jù)本公開的示例的用于使用客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器實施用于在服務(wù)器計算機(jī)上執(zhí)行的基于HTTP的應(yīng)用的預(yù)定義管理策略的方法的另一流程圖。
圖6A至6C是根據(jù)本公開的示例的客戶端計算機(jī)的窗口顯示的示例,該客戶端計算機(jī)執(zhí)行使用客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器來實施用于在服務(wù)器計算機(jī)上執(zhí)行的基于HTTP的應(yīng)用的預(yù)定義管理策略的方法。
具體實施方式
基于網(wǎng)絡(luò)的應(yīng)用(也稱為“應(yīng)用”)的部署的顯著增加已經(jīng)為管理應(yīng)用級策略(諸如像涉及防止敏感數(shù)據(jù)泄漏的那些策略)形成了重大障礙?;诰W(wǎng)絡(luò)的應(yīng)用(也稱為“基于瀏覽器”或“被主控”的應(yīng)用)駐留在萬維網(wǎng)上的一個或多個服務(wù)器計算機(jī)上,并且響應(yīng)于從客戶端計算機(jī)提供的輸入由萬維網(wǎng)上的一個或多個服務(wù)器執(zhí)行,所述客戶端計算機(jī)通過網(wǎng)絡(luò)通信地耦合到所述應(yīng)用。應(yīng)用可以駐留在單個服務(wù)器計算機(jī)上并由其主控,或者部分可以在不同服務(wù)器上主控的多個網(wǎng)站/網(wǎng)頁之間分割或共享,諸如像在其內(nèi)容中包括從另一應(yīng)用嵌入了地圖的商業(yè)目錄應(yīng)用?;诰W(wǎng)絡(luò)的應(yīng)用通過網(wǎng)絡(luò)瀏覽器客戶端顯露它們的用戶界面,并且沒有安裝在用戶的客戶端計算機(jī)上。客戶端計算機(jī)通過將網(wǎng)絡(luò)瀏覽器引導(dǎo)到應(yīng)用的統(tǒng)一資源定位符(URL)來耦合到應(yīng)用;示例包括facebook.com,linkedin.com,salesforce.com和許多其他。在這樣的應(yīng)用中,業(yè)務(wù)邏輯在服務(wù)器處而不是在客戶端處運行。應(yīng)用依賴應(yīng)用服務(wù)器而不是客戶端來在數(shù)據(jù)傳輸?shù)娇蛻舳酥皩?shù)據(jù)施加策略控制的訪問。基于網(wǎng)絡(luò)的應(yīng)用可以通過身份管理方案提供對它們的數(shù)據(jù)和/或功能的訪問控制點。這種類型的訪問能夠基于用戶、角色、位置、訪問設(shè)備和/或網(wǎng)絡(luò)連接。然而,這一方案從應(yīng)用服務(wù)器而不是從客戶端控制數(shù)據(jù)流動和功能訪問。一旦通過HTTP/HTTPS連接使得功能能夠被客戶端訪問和/或數(shù)據(jù)被發(fā)送到客戶端,客戶端就沒有控制點來實施管理策略,所述管理策略旨在確保數(shù)據(jù)或功能不被以與這些策略相反的方式不適當(dāng)?shù)卦L問或操作。
本公開的一個核心概念是提供一種機(jī)構(gòu)和框架,用于使用客戶端的網(wǎng)絡(luò)瀏覽器來實施用于在服務(wù)器上執(zhí)行的基于網(wǎng)絡(luò)的應(yīng)用的預(yù)定義管理策略。在一個示例中,這些策略可以包括指定將能夠如何打印數(shù)據(jù)、操縱數(shù)據(jù)、存儲數(shù)據(jù)或復(fù)制數(shù)據(jù)到客戶端上的其他應(yīng)用。在一個示例中,所述策略可以替代地或附加地包括指定應(yīng)用的功能或特征是否、何時、和/或如何可以被用戶在客戶端上交互。當(dāng)用計算機(jī)實現(xiàn)時,結(jié)果是對計算機(jī)功能的顯著增強(qiáng),使得預(yù)定義的管理策略能夠以有利和有益的方式在客戶端上在它與這樣的基于網(wǎng)絡(luò)的應(yīng)用的交互中實施。
現(xiàn)在參考附圖,示出了系統(tǒng)、客戶端計算機(jī)、方法和計算機(jī)可讀存儲介質(zhì)的示例,這些示例響應(yīng)于與基于網(wǎng)絡(luò)的應(yīng)用相關(guān)聯(lián)的預(yù)定義事件的發(fā)生而在客戶端計算機(jī)上執(zhí)行預(yù)定義操作,以實現(xiàn)和實施預(yù)定義的管理策略。
現(xiàn)在考慮這樣的系統(tǒng),并且參考圖1,系統(tǒng)100包括經(jīng)由通信鏈路105通信地耦合到客戶端計算機(jī)130的服務(wù)器計算機(jī)110。服務(wù)器110主控和執(zhí)行基于網(wǎng)絡(luò)的應(yīng)用120。在一些示例中,基于網(wǎng)絡(luò)的應(yīng)用120是基于HTTP的應(yīng)用。如本文和所附權(quán)利要求中所定義的,“基于HTTP的應(yīng)用”可以被廣泛地理解為包括基于網(wǎng)絡(luò)的應(yīng)用,其中執(zhí)行應(yīng)用的服務(wù)器和訪問應(yīng)用的客戶端之間的通信通過超文本傳輸協(xié)議(HTTP)或超文本傳輸協(xié)議安全(HTTPS)執(zhí)行。應(yīng)用120產(chǎn)生至少一個網(wǎng)頁125,所述網(wǎng)頁125通過鏈路105傳送到客戶端130。網(wǎng)頁125是標(biāo)記語言(諸如HTML(超文本標(biāo)記語言),XHTML(可擴(kuò)展超文本標(biāo)記語言)和/或XML(可擴(kuò)展標(biāo)記語言)的元素或?qū)ο蟮奈臋n。不同的網(wǎng)頁或特定網(wǎng)頁的不同內(nèi)容可以按照應(yīng)用的執(zhí)行所修改的或者響應(yīng)于客戶端130的用戶與應(yīng)用120的交互不時地從服務(wù)器110傳送到客戶端130。
客戶端130包括接收網(wǎng)頁125的網(wǎng)絡(luò)瀏覽器140。接收的網(wǎng)頁作為網(wǎng)頁125的文檔對象模型150存儲在瀏覽器140中。如本文和所附權(quán)利要求中所定義的,“文檔對象模型”(或“DOM”)可以被廣泛地理解為意思指用于表示HTML,XHTML和XML文檔(例如網(wǎng)頁)的對象并與之交互的慣例(convention)。網(wǎng)絡(luò)瀏覽器140再現(xiàn)所接收的網(wǎng)頁的DOM 150以供客戶端130的用戶觀看和交互。
網(wǎng)絡(luò)瀏覽器140包括觸發(fā)引擎160,用以檢測DOM 150的元素152的改變事件162。如本文和所附權(quán)利要求中所定義的,“DOM元素”可以被廣范地理解為意思指根據(jù)DOM模型表示的HTML或XHTML文檔(例如網(wǎng)頁)的元素或XML文檔的節(jié)點。也如本文和所附權(quán)利要求中所定義的,DOM元素的“改變事件”(或“文檔改變事件”)可以被廣范地理解為意味著對元素的存在的改變,對元素的特性或?qū)傩缘母淖?,或?qū)υ氐臄?shù)據(jù)值的改變。對元素存在的改變包括元素被添加到DOM或從DOM移除。對元素的特性、屬性或數(shù)據(jù)值的改變將改變現(xiàn)有元素的一個方面。文檔加載事件可以是由觸發(fā)引擎160檢測到的多個不同類型的事件中的一個。
DOM元素152的特性可以包括定義元素將如何由網(wǎng)絡(luò)瀏覽器140再現(xiàn)的一個或多個視覺特性157;在一個示例中,可以存在字體大小、顏色、背景外觀等的視覺特性。DOM元素152的屬性可以包括均定義元素的特性的一個或多個標(biāo)簽(或特性)。這樣的標(biāo)簽可以特別包括標(biāo)識元素的類型的類標(biāo)簽154;ID標(biāo)簽155,它可以幫助定位元素;以及動作標(biāo)簽156,它指定網(wǎng)絡(luò)瀏覽器140響應(yīng)于元素被選擇而要采取的動作。選擇可以以各種方式發(fā)生,包括但不限于改變焦點至,鼠標(biāo)懸停,點擊,右擊或觸摸。在一個示例中,元素的數(shù)據(jù)值158可以是元素的文本串或數(shù)值。
如本文和所附權(quán)利要求中所定義的,“修改”DOM元素可以被廣泛地理解為意味著改變元素的存在、特性、屬性和/或數(shù)據(jù)值中的至少一個。
網(wǎng)絡(luò)瀏覽器140還包括策略引擎170。如本文和所附權(quán)利要求中所定義的,“策略引擎”(或“策略控制鉤子”)可以被廣義地理解為客戶端計算機(jī)上用于在與基于網(wǎng)絡(luò)的應(yīng)用的交互期間實施預(yù)定義策略的機(jī)構(gòu)。策略引擎170在網(wǎng)絡(luò)瀏覽器140的上下文之內(nèi)執(zhí)行。策略引擎170耦合到觸發(fā)引擎160,并對來自觸發(fā)引擎160的針對事件162的檢測信號164作出響應(yīng)。檢測信號164識別與改變事件162相關(guān)聯(lián)的DOM元素,并且描述改變事件162。響應(yīng)于檢測信號164,策略引擎170執(zhí)行對于與改變事件162相關(guān)聯(lián)的DOM元素可能存在的任何預(yù)定義策略。在在一個示例中,如果檢測信號164針對與DOM元素152相關(guān)聯(lián)的事件162,則在對DOM元素152存在的任何策略中指定的操作將由策略引擎170執(zhí)行??梢栽诓呗灾幸?guī)定寬范圍的操作,包括對DOM的一個或多個元素(其可以包括或者可以不包括發(fā)生了改變事件162的DOM元素152)的修改以及至少部分地在網(wǎng)絡(luò)瀏覽器140之外執(zhí)行的動作,諸如對與事件相關(guān)的信息進(jìn)行日志記錄,或者控制對與網(wǎng)絡(luò)瀏覽器140外部的應(yīng)用120相關(guān)的數(shù)據(jù)的復(fù)制、打印或保存。由策略引擎170執(zhí)行的操作不同于瀏覽器140對DOM的再現(xiàn)也并且獨立于瀏覽器140對DOM的再現(xiàn)。在不同的示例中,由策略引擎執(zhí)行的操作可以與DOM的再現(xiàn)異步或與DOM的再現(xiàn)同步。注意,策略引擎170不是腳本(例如,java腳本(iavascript)),并且不是網(wǎng)頁的一部分。
客戶端計算機(jī)130還包括策略管理器190。策略管理器190接收預(yù)定義策略192,預(yù)定義策略192指定不同于再現(xiàn)DOM 150且與改變事件162相關(guān)聯(lián)的操作和DOM元素152。在本文和所附權(quán)利要求中定義的,“策略”可以被廣泛地理解為包括可用于實現(xiàn)對基于網(wǎng)絡(luò)的應(yīng)用的功能或數(shù)據(jù)的訪問或使用的(在客戶端計算機(jī)上實施的)限制的數(shù)據(jù)結(jié)構(gòu)。策略管理器190又將策略192提供給策略引擎170,并且引擎170可以用策略192來初始化或配置。多個策略192可以編組在一起成為策略數(shù)據(jù)集。
服務(wù)器110和應(yīng)用120可能不知道策略192以及策略引擎170執(zhí)行的操作。因此,給定的應(yīng)用120能夠被多個客戶端130上的多個瀏覽器140交互,多個瀏覽器140均實現(xiàn)不同的策略192。另外,在不打斷應(yīng)用120的情況下,對應(yīng)用120的功能和數(shù)據(jù)的訪問可以用策略192約束。換句話說,應(yīng)用120的不受約束的功能和數(shù)據(jù)將繼續(xù)在客戶端130上正常地操作。
在一些示例中,客戶端計算機(jī)可以是瘦客戶端。如本文和所附權(quán)利要求中所定義的,“瘦客戶端”可以被廣泛地理解為包括具有預(yù)定義的一組應(yīng)用程序并且不能向其添加或移除應(yīng)用程序的客戶端計算機(jī)。在瘦客戶端中,在約束沒有用策略實施的情況下,用戶不能安裝不同的網(wǎng)絡(luò)瀏覽器應(yīng)用以繞過網(wǎng)絡(luò)瀏覽器140和策略引擎170并且訪問應(yīng)用120。
現(xiàn)在考慮包括具有網(wǎng)絡(luò)瀏覽器的客戶端計算機(jī)的另一系統(tǒng),其中所述網(wǎng)絡(luò)瀏覽器具有策略控制特征,并且參考圖2,系統(tǒng)200包括經(jīng)由網(wǎng)絡(luò)205通信地耦合到客戶端計算機(jī)230的服務(wù)器計算機(jī)210。在一個示例中,網(wǎng)絡(luò)205是因特網(wǎng)。在其他示例中,網(wǎng)絡(luò)205可以不同于因特網(wǎng)。服務(wù)器210類似于服務(wù)器110(圖1)。
客戶端230包括網(wǎng)絡(luò)瀏覽器240。瀏覽器240的再現(xiàn)引擎242訪問DOM 150并且生成再現(xiàn)的輸出243到顯示器245,在顯示器245上,再現(xiàn)的輸出243采用視覺形式247作為視為圖形用戶界面(GUI)可被用戶202觀看到。用戶202通過GUI與客戶端計算機(jī)230交互以向瀏覽器240提供用戶輸入248。用戶輸入248的示例特別包括用戶選擇DOM元素,選擇一組多個頁面視圖(例如頁面標(biāo)簽)中的一個,改變DOM元素的位置或方向,以及將數(shù)據(jù)輸入到文本框中。
在應(yīng)用120的操作期間,可以對一個或多個DOM元素(在一個示例中諸如元素152)做出改變。這些改變可以響應(yīng)于用戶輸入248或獨立于用戶輸入248而發(fā)生。應(yīng)用120可以更新或替換網(wǎng)頁125以反映改變,并且向客戶端230發(fā)送更新或新頁面。再現(xiàn)引擎242操作以在視覺上再現(xiàn)修訂頁面的DOM 150。觸發(fā)引擎160還對修訂的DOM150進(jìn)行操作以檢測對它的元素的改變(諸如對元素152的改變事件162),并將檢測到的事件信號164發(fā)送到策略引擎270。
策略引擎270與策略引擎170(圖1)類似地操作。在執(zhí)行預(yù)定義策略(如果存在一個)中,對于與改變事件162(和檢測到的事件164)相關(guān)聯(lián)的DOM元素,策略引擎270可以修改272DOM 150的一個或多個元素。策略引擎270還可以傳遞瀏覽器240外部的外部操作274至諸如客戶端230的操作系統(tǒng)(未示出)或另一個模塊。接著所討論的這種外部操作274的示例包括將與事件相關(guān)的信息日志記錄到用于后續(xù)操作(諸如審計)的文件或者允許或不允許復(fù)制、打印或保存與網(wǎng)絡(luò)瀏覽器140之外的應(yīng)用120相關(guān)的數(shù)據(jù)。在一些示例中,可以組合多個外部操作;例如,日志記錄可以與允許或不允許所日志記錄的操作相結(jié)合。
在一些示例(諸如在圖1中的示例)中,網(wǎng)絡(luò)瀏覽器240包括插件接口288,插件接口288準(zhǔn)許不是瀏覽器240的組成部分的軟件模塊訪問瀏覽器240的功能和數(shù)據(jù)結(jié)構(gòu)。在這些示例中,策略引擎270可以被實現(xiàn)為與插件接口288相配的瀏覽器插件模塊。該架構(gòu)允許策略引擎270被實現(xiàn)為單獨的模塊,所述單獨的模塊能夠被附加到瀏覽器240但是卻能夠采用緊密集成的方式與瀏覽器240進(jìn)行互操作。
策略管理器290與策略管理器190(圖1)類似地操作。策略管理器290可以是網(wǎng)絡(luò)瀏覽器240外部的客戶端230的軟件模塊。在一些示例中,策略管理器290從外部策略服務(wù)器298獲得策略192(通常作為具有多個策略192的數(shù)據(jù)集的一部分)并且使用所獲得的策略192來配置策略引擎270。在其他示例中,策略管理器290可以將先前獲取的策略192緩存在客戶端230中,并且向策略引擎270提供緩存的策略192。在一個示例中,在策略服務(wù)器298不可訪問時,可以使用所緩存的策略。策略管理器190可以從用戶202接收用戶ID 249,或者從用戶202或從客戶端230接收類似的標(biāo)識信息。策略管理器190然后可以使用該信息來從策略服務(wù)器298或在緩存中識別和獲得那些策略,那些策略與用戶202和/或客戶端230相關(guān)聯(lián)。以這種方式,策略引擎270能夠配置有適用于用戶202和/或客戶端230的適當(dāng)策略。在不同的示例中,所有策略可以適用于所有用戶202和/或客戶端230,并且用戶ID 249可以不被提供或使用。
更詳細(xì)地考慮策略192,多個策略192可以被策略引擎270結(jié)合特定應(yīng)用120使用。這些多個策略192可以形成策略數(shù)據(jù)集292。每個策略192通常被IT管理員或類似的人員預(yù)定義來實現(xiàn)用于一組客戶端230(諸如屬于特定組織的那些客戶端)的管理策略。每個策略192包括各種字段。
應(yīng)用字段294指定策略192施加到的應(yīng)用120。這允許策略引擎270同時配置有針對多個應(yīng)用120的策略192,使得隨著用戶從一個應(yīng)用120沖浪到不同的應(yīng)用120,適當(dāng)?shù)牟呗砸婺軌虮粦?yīng)用。在一些示例中,多個應(yīng)用120可以在應(yīng)用字段294中指定。在一些示例中,如果應(yīng)用字段294不包含條目,則策略引擎270將策略192施加到所有應(yīng)用120。
元素字段295指定策略192施加到的DOM元素152。在一個示例中,DOM元素152可以用DOM元素152的類標(biāo)簽154來標(biāo)識。
條件字段296指定如果被滿足則使由操作字段297指定的操作由策略引擎270執(zhí)行的條件。該條件可以是用于DOM元素152整體,或用于元素152的元素數(shù)據(jù)158??蓱?yīng)用于元素152整體的條件的示例包括元素是否可見,或者元素是否已被用戶選擇。適用于元素數(shù)據(jù)158的條件的示例包括元素文本數(shù)據(jù)中是否存在特定的字符子串,或元素數(shù)值數(shù)據(jù)的值是否在指定的值范圍之外。在一些示例中,條件字段296可以包括用邏輯運算符(例如與(AND),或(OR),非(NOT)等)連接的多個條件,所述多個條件條件被評估以確定所述條件是否被滿足。策略引擎270可以基于這些條件產(chǎn)生組合斷言或真命題。例如:如果條件1存在或條件2存在,則執(zhí)行操作3。
當(dāng)在元素字段295中指定的元素的條件字段196中指定的條件被滿足時,操作字段297指定要由策略引擎270對應(yīng)用字段294中指定的應(yīng)用120執(zhí)行的操作。如上所述,在一些示例中,操作可以修改DOM 150的至少一個元素152。在這種情況下,操作字段297指定要執(zhí)行的操作和在上面執(zhí)行操作的元素152。元素152可以是在元素字段295中指定的相同元素或是DOM 150的不同元素152。在一些示例中,操作字段297可以指定將對多個元素執(zhí)行操作。在一些示例中,操作字段297可以指定多個操作,并且這些多個操作中的每一個可以對一個或多個元素執(zhí)行。修改DOM元素152的操作的示例包括從DOM 150中移除指定的元素,向DOM 150添加元素,改變DOM元素的屬性或特性或者改變元素數(shù)據(jù)的內(nèi)容。
在其他示例中,操作可以是對瀏覽器240外部的程序或模塊執(zhí)行特定任務(wù)的請求。如上所述,這可以包括將與改變事件相關(guān)的數(shù)據(jù)日志記錄到文件。在這種情況下,策略引擎270可以連同所述請求一起提供要日志記錄的數(shù)據(jù)。策略管理器190可以接收這些請求和數(shù)據(jù),并且執(zhí)行操作本身或者將操作路由到客戶端130的適當(dāng)資源。
現(xiàn)在更詳細(xì)地考慮客戶端計算機(jī)230的一個示例架構(gòu),參考圖3,客戶端計算機(jī)230包括處理器310和存儲器320。處理器310通過鏈路305通信地耦合到存儲器320和顯示器245。在一些示例中,諸如圖3中所示的示例,存儲器320和顯示器245也經(jīng)由鏈路305耦合,不過在其他示例中,它們可以不直接耦合到彼此。
除了諸如DOM 150的數(shù)據(jù)之外,能被處理器310執(zhí)行的程序也可以存儲在存儲器320中。具有能被處理器310執(zhí)行的單獨指令的程序在層次結(jié)構(gòu)中可以被按照概念組織。能夠訪問客戶端計算機(jī)230的硬件資源的操作系統(tǒng)330處于最低級別。包括網(wǎng)絡(luò)瀏覽器240,策略管理器290和其他程序(未示出)的本機(jī)程序在分層結(jié)構(gòu)中處于下一個更高級別,并且能夠直接訪問操作系統(tǒng)的功能。策略引擎270在分層結(jié)構(gòu)中處于再更高級別,因為它經(jīng)由插件接口288插入到網(wǎng)絡(luò)瀏覽器240中。這樣,策略引擎270在網(wǎng)絡(luò)瀏覽器240的上下文中執(zhí)行。程序指令可以通過插件接口288將策略引擎270安裝到網(wǎng)絡(luò)瀏覽器240中。策略引擎270不具有對操作系統(tǒng)的功能的直接訪問,而取而代之卻有權(quán)訪問網(wǎng)絡(luò)瀏覽器240的經(jīng)由插件接口270而顯露給它的那些功能。為了執(zhí)行未顯露的操作(諸如數(shù)據(jù)日志記錄)和訪問客戶端230的其他功能,策略引擎270可以向策略管理器290發(fā)送對這樣的操作的請求。
參考圖4,現(xiàn)在考慮一種用于使用客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器實施用于在服務(wù)器計算機(jī)上執(zhí)行的基于HTTP的應(yīng)用的預(yù)定義管理策略的方法??商娲兀瑘D4可以被認(rèn)為是客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器的流程圖。如上所述,對HTTP的參考可以包括HTTPS和其他兼容協(xié)議。該方法開始于402:使用策略初始化瀏覽器。該策略包括至少一個操作。對于每個操作,策略還包括由應(yīng)用呈現(xiàn)給客戶端的網(wǎng)頁的文檔對象模型(DOM)的關(guān)聯(lián)元素。在404,由瀏覽器檢測DOM的元素的文檔改變事件。在406,檢查文檔改變事件以確定事件是否是針對策略中的元素。如果不是(406的“否”分支),則該方法分支回到404。如果是(406的“是”分支),則在408執(zhí)行策略的操作。在一些示例中,在410,如果元素可見,則執(zhí)行操作。在一些示例中,在412,操作修改DOM的元素,并且該操作由策略引擎在瀏覽器上下文內(nèi)執(zhí)行。在414,當(dāng)由瀏覽器在再現(xiàn)DOM時,操作可以允許或不允許元素的功能或者示出或隱藏元素的用戶界面表示。在一些示例中,在416,操作修改DOM的元素的元素數(shù)據(jù)以重新定義被瀏覽器再現(xiàn)時它的內(nèi)容和外觀中的至少一個,并且該操作由策略引擎在瀏覽器上下文內(nèi)執(zhí)行。在一些示例中,在418,操作對瀏覽器之外的文檔改變事件進(jìn)行日志記錄。這還可以包括日志記錄與事件相關(guān)聯(lián)的數(shù)據(jù),包括相關(guān)聯(lián)元素的數(shù)據(jù)。
參考圖5,現(xiàn)在考慮另一種用于使用客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器來實施用于在服務(wù)器計算機(jī)上執(zhí)行的基于HTTP的應(yīng)用的預(yù)定義管理策略的方法??商鎿Q地,圖5可以被視為客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器的策略引擎(例如策略引擎170(圖1),270(圖2))的流程圖。該方法在502開始:加載至少一個策略。在一些示例中,加載具有多個單獨策略的策略數(shù)據(jù)集(諸如策略數(shù)據(jù)集292(圖2))。可以從客戶端計算機(jī)外部的策略服務(wù)器或者從客戶端上已經(jīng)存在的本地副本進(jìn)行加載。在504,等待頁面加載事件的發(fā)生。頁面加載事件指示已經(jīng)加載了新的網(wǎng)頁,并且DOM現(xiàn)在表示該新網(wǎng)頁的元素。頁面加載事件可以響應(yīng)于用戶使用網(wǎng)絡(luò)瀏覽器導(dǎo)航到新的URL而發(fā)生。頁面加載事件還可以響應(yīng)于應(yīng)用向客戶端發(fā)送新的網(wǎng)頁而發(fā)生,這產(chǎn)生新的DOM。在506,確定策略數(shù)據(jù)集292中是否存在針對該應(yīng)用的策略192(圖1-2)。這可以通過將網(wǎng)頁的URL的頂級域與策略數(shù)據(jù)集292中的策略192的應(yīng)用字段294進(jìn)行比較來進(jìn)行。如果不是(506的“否”分支),則流程分支到504。如果是(560的“是”分支),則在508處等待文檔改變事件。如果對DOM元素的改變發(fā)生了,則可以由觸發(fā)引擎160(圖1-2)為DOM元素生成文檔改變事件。在510,一旦檢測到文檔改變事件,則識別與文檔改變事件相關(guān)聯(lián)的DOM元素。文檔改變事件提供已經(jīng)改變的DOM元素的指示。在512,在策略數(shù)據(jù)集292中搜索對應(yīng)于改變的DOM元素的一個或多個策略。這可以通過將文檔改變事件指示的DOM元素與策略數(shù)據(jù)集292中的每個策略192的元素字段295進(jìn)行比較來進(jìn)行。如果改變的DOM元素不在策略下(514的“否”分支),則流程分支到508。換句話說,在這種情況下,在數(shù)據(jù)集292中沒有具有匹配元素字段295的策略192。如果改變的DOM元素在策略下(514的“是”分支)-換句話說,存在具有匹配元素字段295的至少一個策略192-則在516-518可以順序測試這些元素匹配的策略192。在516,對于元素匹配的策略192之一確定是否滿足在那個策略192中指定的條件(或多個條件)。這可以通過將每個元素匹配策略192的條件字段296與DOM元素的當(dāng)前相關(guān)屬性、特性和元素數(shù)據(jù)進(jìn)行比較來確定。如果針對改變的DOM元素指定的條件不被滿足(516的“否”分支),則流程分支到520。如果滿足指定的條件(516的“是”分支),則在518執(zhí)行在該策略的操作字段297中指定的操作,并且流程在520繼續(xù)。在520,確定是否還有更多的元素匹配策略192要被測試。如果是(520的“是”分支),則選擇下一個元素匹配策略192,并且流程分支到516。如果沒有(520的“否”分支),則已經(jīng)測試了所有元素匹配策略,并且分支到508以等待下一文檔改變事件。
該方法具有它等待事件發(fā)生的幾個點,例如在504,508,530和540處。為了使圖5中的圖示說明清楚,每個點被單獨示出,但發(fā)生的事件類型決定了該方法在哪里繼續(xù)。因此,如果在530觸發(fā)引擎160檢測到頁面卸載事件,則流程分支到504。這指示它的加載觸發(fā)了先前頁面加載事件的網(wǎng)頁已被卸載,并且不需要等待文檔更改事件。
另外,如果在540觸發(fā)引擎160檢測到瀏覽器關(guān)閉事件,則這指示網(wǎng)絡(luò)瀏覽器正在被關(guān)閉。結(jié)果,策略引擎的操作終止。
現(xiàn)在考慮使用客戶端計算機(jī)的網(wǎng)絡(luò)瀏覽器來實施用于在服務(wù)器計算機(jī)上執(zhí)行的基于HTTP的應(yīng)用的預(yù)定義管理策略的示例,并且參考圖6A,示例應(yīng)用位于URL“http:\\www.example.com”,并且用戶將網(wǎng)絡(luò)瀏覽器定向到該URL。為了簡化說明,應(yīng)用向瀏覽器提供第一和第二示例網(wǎng)頁。在第一示例中,沒有適用于該應(yīng)用的策略。如果網(wǎng)絡(luò)瀏覽器沒有策略引擎,或者網(wǎng)絡(luò)瀏覽器具有策略引擎,但沒有為應(yīng)用定義的策略,則可能會發(fā)生這種情況。第一示例網(wǎng)頁在由網(wǎng)絡(luò)瀏覽器的再現(xiàn)引擎在顯示器上再現(xiàn)時導(dǎo)致窗口600A的圖形界面,圖形界面包括聊天按鈕610。如果用戶選擇聊天按鈕610,則基于HTTP的應(yīng)用對該用戶輸入作出響應(yīng)并將第二示例網(wǎng)頁提供給網(wǎng)絡(luò)瀏覽器。響應(yīng)于接收到第二示例網(wǎng)頁,網(wǎng)絡(luò)瀏覽器在顯示器上再現(xiàn)第二頁面以產(chǎn)生窗口600A的圖形界面。第二網(wǎng)頁包括突顯的聊天按鈕620,用于進(jìn)入消息的文本框630,用于外發(fā)消息的文本框640和發(fā)送按鈕650。這是用戶界面的簡單圖示,其中來自正在與其進(jìn)行聊天會話的遠(yuǎn)程客戶端的進(jìn)入消息在本地客戶端處接收時,被在進(jìn)入消息文本框630中顯示,并且隨著來自本地客戶端處的用戶的外發(fā)消息被用戶鍵入,在外發(fā)消息文本框640中出現(xiàn)所述外發(fā)消息。當(dāng)用戶選擇發(fā)送按鈕650時,在框640中的外發(fā)消息被發(fā)送到遠(yuǎn)程客戶端。
表1示出了對應(yīng)于第一示例網(wǎng)頁的DOM的片段部分:
表1-第一示例網(wǎng)頁(窗口600A)
為了簡化圖示說明,在圖示說明DOM的表(諸如表1)中,應(yīng)用了幾個慣例。第一,為了清楚起見,省略了與本公開不相關(guān)的DOM的許多部分。這些部分在表中用省略號(“...”)示出。第二,所有注釋以字符“//”開頭。第三,括號(“[]”)表示元素數(shù)據(jù),它也被稱為“內(nèi)部HTML”,并且元素數(shù)據(jù)被示出在DOM元素內(nèi)以便清楚,即使它可能不出現(xiàn)在使用開發(fā)工具生成的DOM的表示中。
在表1中,聊天按鈕610的外觀由<樣式(style)>部分中的聊天按鈕(chat_button)DOM元素的特性定義。標(biāo)識聊天按鈕610并定義其功能的屬性和標(biāo)簽在<主體(body)>部分中指定。這些包括類屬性、id屬性、角色屬性、動作屬性和href屬性。屬性和標(biāo)簽使應(yīng)用能夠使用服務(wù)器實現(xiàn)與DOM元素相關(guān)聯(lián)的功能。元素數(shù)據(jù)也可以由應(yīng)用在實現(xiàn)功能時使用。
表2示出了對應(yīng)于第二示例網(wǎng)頁的DOM的片段部分。
表2-第二示例網(wǎng)頁(窗口600B)
在表2的第二網(wǎng)頁的DOM中,聊天按鈕620的樣式特性反映它與聊天按鈕610的“反轉(zhuǎn)”外觀。已經(jīng)為進(jìn)入消息文本框630、外發(fā)消息文本框640和發(fā)送按鈕650添加了DOM元素。每個元素在DOM中都有定義的自己的特性、屬性和元素數(shù)據(jù)。表2中的元素數(shù)據(jù)反映窗口600B的當(dāng)前狀態(tài),窗口600B被出示有進(jìn)入和外發(fā)消息。
考慮要為在服務(wù)器上執(zhí)行的基于HTTP的應(yīng)用在客戶端上實施的第一示例預(yù)定義策略數(shù)據(jù)集。該數(shù)據(jù)集在表3中示出,并且為數(shù)據(jù)集中的每個策略定義應(yīng)用字段294、元素字段295、條件字段296和操作字段297(圖2):
表3-第一示例策略數(shù)據(jù)集
表3的數(shù)據(jù)集包括兩個策略。第一個策略被應(yīng)用于頂級域的應(yīng)用example.com,而第二個策略被應(yīng)用于頂級域的應(yīng)用app2.com。
為了解釋第一策略的操作,考慮網(wǎng)絡(luò)瀏覽器已經(jīng)在客戶端上被調(diào)用并且第一策略被加載(圖5,502)之后的時間。用戶導(dǎo)航到URL“http:\\www.example.com”,并且基于HTTP的應(yīng)用將第一示例網(wǎng)頁(表1)發(fā)送到網(wǎng)絡(luò)瀏覽器。頁面加載事件504由觸發(fā)引擎檢測(圖5,404),并且檢查第一策略數(shù)據(jù)集。因為該數(shù)據(jù)集中的第一策略的應(yīng)用字段294對應(yīng)于該URL(圖5,步驟506),所以策略引擎等待要從觸發(fā)引擎接收的文檔改變事件(圖5,步驟508)。在網(wǎng)頁被加載時,為網(wǎng)頁的每個DOM元素生成文檔改變事件。由于對這些不同于聊天按鈕的其他DOM元素不存在策略,所以可以忽略針對這些DOM元素發(fā)生的文檔改變事件(圖5,510-514)。當(dāng)生成對聊天按鈕元素的文檔改變事件時,確定是否滿足條件(圖5,516)。聊天按鈕元素是可見的,這滿足在第一策略的條件字段296中定義的條件。因此,通過執(zhí)行在第一策略的操作字段297中定義的操作,將第一策略施加到聊天按鈕的DOM元素,這從DOM中移除DOM元素。此時,在將表3的數(shù)據(jù)集的第一策略施加到DOM之后,表1的第一示例網(wǎng)頁的修改版本如表4所示:
表4-應(yīng)用策略后的第一個示例網(wǎng)頁(窗口600C)
網(wǎng)絡(luò)瀏覽器再現(xiàn)表4的修訂的DOM,從而得到圖6C的窗口600C,其中沒有聊天按鈕出現(xiàn)。策略的意圖和效果是防止用戶訪問基于HTTP的應(yīng)用的聊天功能。然而,除此之外,基于HTTP的應(yīng)用在客戶端上正常地操作,并且應(yīng)用和服務(wù)器不知道客戶端的網(wǎng)絡(luò)瀏覽器中的策略的實現(xiàn),并且也不受客戶端的網(wǎng)絡(luò)瀏覽器中的策略的實現(xiàn)的影響。
現(xiàn)在考慮要為在服務(wù)器上執(zhí)行的基于HTTP的應(yīng)用在客戶端上實施的第二示例性預(yù)定義策略數(shù)據(jù)集。該數(shù)據(jù)集示于表5中:
表5-第二示例策略數(shù)據(jù)集
表5的數(shù)據(jù)集包括五個策略。第一個到第四個策略被應(yīng)用于頂級域的應(yīng)用example.com,而第五個策略被應(yīng)用于頂級域的應(yīng)用app2.com。
為了解釋第二策略的操作,考慮在第二示例網(wǎng)頁(表2)已經(jīng)被加載到網(wǎng)絡(luò)瀏覽器并且聊天會話正在進(jìn)行之后的時間。已經(jīng)從基于HTTP的應(yīng)用接收了進(jìn)入的聊天消息,并且隨著進(jìn)入消息DOM元素的元素數(shù)據(jù)被改變以反映進(jìn)入的消息文本,檢測到對進(jìn)入消息DOM元素的文檔改變事件。策略引擎在處理文檔改變事件中確定表5的策略數(shù)據(jù)集的第一策略施加到進(jìn)入消息元素(圖5,508-512)。在元素數(shù)據(jù)(“我有一個關(guān)于您正在處理的機(jī)密項目的問題(″I have a question about the confidential project you are working on)”)中搜索文本子字符“機(jī)密(confidential)”,它被找到。結(jié)果,通過執(zhí)行在策略的操作字段297中定義的操作來將表5的第一策略施加到進(jìn)入消息元素的DOM元素,這通過添加標(biāo)簽來修改元素數(shù)據(jù),所述標(biāo)簽被再現(xiàn)時使得子串以粗體字、下劃線和紅色顯示。策略的意圖和效果是突顯“機(jī)密”一詞,以通知客戶端的用戶在他的聊天會話中要相當(dāng)慎重。
接下來,客戶端的用戶鍵入外發(fā)聊天消息:“是的,那是飛馬項目,請叫我(Yes,that is the Pegasus project.Please call me)”。每個鍵入的字符對外發(fā)消息元素引起文檔改變事件。表5的數(shù)據(jù)集的第二和第三策略施加到外發(fā)消息元素。對于這兩個策略,根據(jù)它們的條件字段296,在元素數(shù)據(jù)中搜索文本子串“神馬”。當(dāng)用戶已經(jīng)完成鍵入該單詞時,找到在條件字段296中指定的子串。結(jié)果,通過執(zhí)行在第二策略的操作字段297中定義的操作,將表5的第二策略施加到外發(fā)消息元素的DOM元素,用星號(″*″)修訂外發(fā)消息元素的元素數(shù)據(jù)中的子串的字符。第二個策略的目的和效果是向任何旁觀者隱藏項目代碼名稱“神馬”。然后,通過執(zhí)行在第三策略的操作字段297中定義的操作,將表5的第三策略施加到外發(fā)消息元素的DOM元素,用以移除發(fā)送按鈕元素的“動作”屬性以便禁用它,并且改變發(fā)送按鈕元素的樣式特性以便為該元素賦予灰色外觀。當(dāng)在策略引擎針對第二和第三策略做出改變之后DOM被再現(xiàn)時,用戶能夠識別出他已經(jīng)鍵入了禁止的代碼名稱,并且不能發(fā)送他的聊天消息,直到從消息中擦除了該代碼名稱。
在這一點上,在表4的數(shù)據(jù)集的第一,第二和第三策略已經(jīng)被施加于DOM之后,第二示例網(wǎng)頁的修改版本如表6所示:.
表6-應(yīng)用策略后的第二個示例網(wǎng)頁(窗口600D)
表6的修改的DOM在被再現(xiàn)時顯示圖6C的窗口600D的用戶界面。在進(jìn)入消息文本框630中的單詞“機(jī)密”變?yōu)榇煮w,加下劃線和紅色。星號在外發(fā)消息文本框640中替換代碼名稱“神馬”。發(fā)送按鈕的錨(<a>)字段的“動作”標(biāo)簽已經(jīng)被從動作“doSendMessage(發(fā)送消息)();”改變?yōu)閯幼鳎健啊币越迷摪粹o,并且發(fā)送按鈕650的背景和顏色的樣式特性被設(shè)置為#800000(灰色),以在視覺上向用戶指示它的操作被禁用,并且如果選擇該按鈕,將什么都不發(fā)生。
參考表1-6和圖6A-6C描述的示例網(wǎng)頁和策略,雖然已經(jīng)被大大簡化了,但是仍然示出了本公開提供的一些能力。
從上述內(nèi)容可以理解:本公開提供的客戶端計算機(jī)、計算機(jī)可讀存儲介質(zhì)和方法表示本領(lǐng)域中的顯著進(jìn)步。盡管已經(jīng)描述和示出了若干特定示例,但本公開并不限于如此描述和示出的特定方法,形式或部件布置。本說明書應(yīng)當(dāng)被理解為包括本文描述的元素的所有新穎和非顯而易見的組合,并且對于這些元素的任何新穎的和非顯而易見的組合,在本申請或以后的申請中都可以提出權(quán)利要求。前述示例是說明性的,并且沒有單個特征或元素對于可以在本申請或后續(xù)申請中要求主張的所有可能組合是必要的。除非另有指定,方法權(quán)利要求的步驟不需要以規(guī)定的次序執(zhí)行。類似地,圖塊或數(shù)字(諸如(1),(2)等)不應(yīng)被解釋為必須以特定次序進(jìn)行的步驟。附加的塊/步驟可以被添加,一些塊/步驟可以被移除,或者塊/步驟的次序可以被改動,并且仍然可以在所公開的示例的范圍內(nèi)。此外,在不同附圖中討論的方法或步驟可以被添加到其他圖中的方法或步驟或與其互換。此外,特定的數(shù)字?jǐn)?shù)據(jù)值(諸如特定量,數(shù),類別等)或其他特定信息應(yīng)當(dāng)被解釋為是用于討論示例的說明性的。提供這樣的特定信息并不是用來限制示例的。本公開不限于上述實施方式,取而代之是由所附權(quán)利要求根據(jù)其等同物的全部范圍來限定的。在權(quán)利要求記載其等同物的“一個”或“第一”元素的情況下,這樣的權(quán)利要求應(yīng)當(dāng)被理解為包括一個或多個這樣的元素的并入,既不要求也不排除兩個或更多個這樣的元素。在權(quán)利要求記載“具有”的情況下,該術(shù)語應(yīng)當(dāng)被理解為是指“包括”。