專利名稱:一種跨域通訊的方法、系統(tǒng)和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種跨域通訊的方法、系統(tǒng)和裝置。
背景技術(shù):
由于瀏覽器客戶端為訪問(wèn)者提供了基于域的安全隔離機(jī)制,來(lái)防止不 同網(wǎng)站間的程序互相訪問(wèn)對(duì)方的數(shù)據(jù),以保護(hù)訪問(wèn)者在一個(gè)網(wǎng)站的隱私數(shù) 據(jù)不會(huì)被另 一個(gè)網(wǎng)站所竊取。瀏覽器的這個(gè)安全機(jī)制在給訪問(wèn)者提供安全 保障的同時(shí),也給網(wǎng)站開發(fā)帶來(lái)障礙。對(duì)于一個(gè)擁有多個(gè)域名的大型網(wǎng)站 平臺(tái)或者相互信任的不同網(wǎng)站來(lái)說(shuō),網(wǎng)站間的數(shù)據(jù)交換和相互服務(wù)是很正 常的事情。
現(xiàn)有技術(shù)中跨域通訊的方法主要有
現(xiàn)有技術(shù)一利用瀏覽器的安全漏洞來(lái)通訊。不斷挖掘?yàn)g覽器的安全漏 洞,實(shí)現(xiàn)跨域訪問(wèn)和交換數(shù)據(jù)。
現(xiàn)有技術(shù)二設(shè)置瀏覽器允許跨域訪問(wèn)。要求用戶降低瀏覽器安全標(biāo)準(zhǔn), 設(shè)置瀏覽器允許跨域訪問(wèn)。
現(xiàn)有技術(shù)三利用不同網(wǎng)站間的URL ( Uniform Resource Locator,統(tǒng)一 資源定位符)跳轉(zhuǎn)來(lái)通訊。 一個(gè)域請(qǐng)求另一個(gè)域的網(wǎng)頁(yè),并將要交換的信 息以URL參數(shù)等形式傳遞;對(duì)方回送信息也是讓瀏覽器重定向回原來(lái)域的 網(wǎng)頁(yè),并將回送信息以URL參數(shù)形式返回等。
現(xiàn)有技術(shù)四利用跨域的腳本引用。 一個(gè)域的網(wǎng)頁(yè)用〈script〉標(biāo)簽引用另 一個(gè)域的js (javascript腳本)文件內(nèi)容,并將發(fā)送數(shù)據(jù)以URL的參數(shù)形 式傳遞過(guò)去。另一個(gè)域的這個(gè)js文件可以編寫任意腳本來(lái)將數(shù)據(jù)直接送到 當(dāng)前網(wǎng)頁(yè)中。
在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問(wèn)題利用瀏覽器的安全漏洞來(lái)通訊時(shí),惡意網(wǎng)站也能利用安全漏洞實(shí)施攻 擊,而且隨著瀏覽器的修補(bǔ)和升級(jí),需要尋找新的漏洞。
設(shè)置瀏覽器允許跨域訪問(wèn)時(shí),要求訪問(wèn)者降低瀏覽器安全級(jí)別同樣會(huì) 讓惡意網(wǎng)站有才幾可乘。
利用不同網(wǎng)站間的URL跳轉(zhuǎn)來(lái)通訊時(shí),每次數(shù)據(jù)通訊需要多次往返服 務(wù)器,服務(wù)器壓力很大,效率低下,攻擊者可以從瀏覽器的地址欄上看到 URL傳遞的數(shù)據(jù)信息,有安全隱患,并且由于URL長(zhǎng)度限制,無(wú)法傳遞 大型數(shù)據(jù)
利用跨域的腳本引用時(shí),每次通訊需要請(qǐng)求服務(wù)器生成新腳本,比較 復(fù)雜,并且一方完全將自己的數(shù)據(jù)暴露給另一方的腳本,另一方可以竊取 任何東西。
發(fā)明內(nèi)容
本發(fā)明提供了一種跨域通訊的方法、系統(tǒng)和裝置,用于在保證瀏覽的域 安全隔離前提下,實(shí)現(xiàn)不同域名間安全通訊。
本發(fā)明提供了 一種跨域通訊的方法,應(yīng)用于包括發(fā)起方和接收方的系統(tǒng) 中,所述發(fā)起方和接收方位于不同的域中,包括
所述發(fā)送方向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求;
所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送數(shù)據(jù)的 頁(yè)面發(fā)送的響應(yīng);
所述發(fā)送方從所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng)。
本發(fā)明還提供了 一種跨域通訊的方法,應(yīng)用于包括發(fā)起方和接收方的系 統(tǒng)中,所述發(fā)起方和接收方位于不同的域中,包括
所述接收方中用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求;
所述接收方處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng);
所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的頁(yè)面發(fā)送 所述響應(yīng)。
7本發(fā)明還提供一種跨域通訊的系統(tǒng),包括發(fā)送方和接收方,所述發(fā)送 方與所述接收方位于不同的域中;
所述發(fā)送方,用于向所述接收方中用于接收翁:據(jù)的頁(yè)面發(fā)送請(qǐng)求;并通 過(guò)本地用于接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的 響應(yīng);從所述本地用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng);
所述接收方,用于通過(guò)用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求, 處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng),并通過(guò)用于發(fā)送數(shù)據(jù)的頁(yè)面,向所 述發(fā)送方接收數(shù)據(jù)的頁(yè)面發(fā)送所述響應(yīng)。
本發(fā)明還提供一種跨域通訊的裝置,包括請(qǐng)求發(fā)送單元、響應(yīng)接收單 元以及數(shù)據(jù)獲取單元;
所述請(qǐng)求發(fā)送單元,用于向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求;
所述響應(yīng)接收單元,用于通過(guò)接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于 發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);
所述數(shù)據(jù)獲取單元,用于從所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面中獲取所 述響應(yīng)。
本發(fā)明還提供一種跨域通訊的裝置,包括請(qǐng)求接收單元、處理單元以 及響應(yīng)發(fā)送單元;
所述請(qǐng)求接收單元,用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求; 所述處理單元,用于處理所述接收方發(fā)送的:f青求并^/尋到響應(yīng); 所述響應(yīng)發(fā)送單元,用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的頁(yè) 面發(fā)送所述響應(yīng)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過(guò)使用本發(fā)明完全遵循瀏覽器域安全隔離機(jī)制,并且不需要用戶降 低安全級(jí)別、沒(méi)有URL頁(yè)面跳轉(zhuǎn)以及不會(huì)頻繁請(qǐng)求服務(wù)器,并且保證通訊 雙方有公平和對(duì)稱的安全保護(hù),實(shí)現(xiàn)不同域之間安全通訊。
圖1為本發(fā)明實(shí)施例一種if爭(zhēng)域通訊方法的流程8圖l-A為本發(fā)明實(shí)施例一種跨域通訊方法的又一流程圖2為本發(fā)明實(shí)施例中一種跨域通訊方法原理圖3為本發(fā)明實(shí)施例一中一種跨域通訊方法的流程圖4為本發(fā)明實(shí)施例二中 一種跨域通訊方法的流程圖5為本發(fā)明實(shí)施例中 一種跨域通訊的系統(tǒng)圖6為本發(fā)明實(shí)施例中一種跨域通訊裝置的結(jié)構(gòu)圖7為本發(fā)明實(shí)施例中又一跨域通訊裝置的結(jié)構(gòu)圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例提供一種跨域通訊的方法、系統(tǒng)和裝置,用于在保證瀏
覽的域安全隔離前提下,實(shí)現(xiàn)不同域之間安全通訊。
以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的實(shí)施方式作進(jìn) 一 步說(shuō)明。 本發(fā)明實(shí)施例提供一種跨域通訊的方法,具體流程如圖1所示,包括 S101 、所述發(fā)送方向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求。 S102、所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送
數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng)。
本發(fā)明實(shí)施例還提供一種^f爭(zhēng)域通訊的方法,具體流程如圖l-A所示, 包括
5101- A、所述接收方中用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求。
5102- A、所述接收方處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng)。
5103- A、所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的 頁(yè)面發(fā)送所述響應(yīng)。
通過(guò)使用本發(fā)明完全遵循瀏覽器域安全隔離機(jī)制,并且不需要用戶降 低安全級(jí)別、沒(méi)有URL頁(yè)面跳轉(zhuǎn)以及不會(huì)頻繁請(qǐng)求服務(wù)器,并且保證通訊 雙方有公平和對(duì)稱的安全保護(hù),實(shí)現(xiàn)不同域之間安全通訊。
本發(fā)明實(shí)施例一中提供一種跨域通訊的方法,如圖2所示為該方法的 原理圖,各個(gè)部分的詳細(xì)原理如下(1) 在實(shí)現(xiàn);夸域傳遞前,通訊雙方服務(wù)器首先部署兩個(gè)頁(yè)面文件,一 個(gè)用于接收請(qǐng)求一個(gè)用于回送響應(yīng)。在瀏覽器^E爭(zhēng)域通訊過(guò)程中,瀏覽器打 開通訊雙方服務(wù)器部署的頁(yè)面文件進(jìn)行跨域通訊的數(shù)據(jù)傳遞。需要說(shuō)明的 是"部署"是指在遠(yuǎn)端的服務(wù)器上放置這些頁(yè)面文件,而"打開,,是指本 地瀏覽器向遠(yuǎn)端服務(wù)器部署的頁(yè)面文件發(fā)送訪問(wèn)請(qǐng)求。
(2) 在實(shí)現(xiàn)S爭(zhēng)域傳遞時(shí),通訊發(fā)起方的一個(gè)原始頁(yè)向?qū)Ψ接虻耐ㄓ嵔?收方發(fā)送跨域傳遞請(qǐng)求命令和參數(shù)時(shí),原始頁(yè)所在的瀏覽器會(huì)打開服務(wù)器
端的一個(gè)隱含頁(yè)面,利用該隱含頁(yè)面去打開對(duì)方域服務(wù)器中部署的ASK頁(yè) 面,并將通訊請(qǐng)求所需的命令和數(shù)據(jù)通過(guò)該請(qǐng)求URL片段標(biāo)識(shí)符以及該頁(yè) 面window對(duì)象的name屬性傳遞過(guò)去。其中原始頁(yè)是通訊發(fā)起方發(fā)起通訊 時(shí)所在的頁(yè)面,并且所述原始頁(yè)是處在通訊發(fā)起方的域內(nèi),例如isv.com。
(3) 通訊接收方通過(guò)接收請(qǐng)求頁(yè)面ASK^妄收請(qǐng)求命令和參數(shù),并向 服務(wù)器提取結(jié)果數(shù)據(jù)。該過(guò)程的實(shí)現(xiàn)是由于ASK頁(yè)面處于通訊接收方的域 中,例如alisoft.com,所以可以根據(jù)對(duì)方的請(qǐng)求命令取得該域內(nèi)的相關(guān)數(shù) 據(jù)。
(4) 通訊接收方通過(guò)接收請(qǐng)求頁(yè)面ASK獲得結(jié)果數(shù)據(jù)后,該接收請(qǐng) 求頁(yè)面ASK會(huì)直接打開通訊發(fā)起方服務(wù)器部署的回送響應(yīng)頁(yè)面ACK,或 再打開一個(gè)隱含頁(yè)面并利用該隱含頁(yè)面去打開通訊發(fā)起方服務(wù)器部署的回 送響應(yīng)頁(yè)面ACK,并將要回送的位置和數(shù)據(jù)通過(guò)URL的片段標(biāo)識(shí)符以及 頁(yè)面window對(duì)象的name屬性傳遞到上述的回送響應(yīng)頁(yè)面ACK中。其中 ACK頁(yè)面位于通訊發(fā)起方的域中,例如isv.com,所以在回送響應(yīng)頁(yè)面ACK 接收到結(jié)果數(shù)據(jù)后將所述結(jié)果數(shù)據(jù)傳遞回通訊發(fā)起方的原始頁(yè)。
其中,ASK頁(yè)面用于接收跨域傳遞請(qǐng)求命令,并根據(jù)該命令提取結(jié)果 數(shù)據(jù);ACK頁(yè)面用于接收ASK頁(yè)面發(fā)送的結(jié)果數(shù)據(jù),并將結(jié)果數(shù)據(jù)傳回 原域的原始頁(yè)。需要說(shuō)明的是,通訊雙方只有在第一次傳遞跨域請(qǐng)求時(shí), 需要通過(guò)通訊接收方的服務(wù)器進(jìn)行數(shù)據(jù)傳遞。在以后的跨域傳遞中,瀏覽 器利用自身緩存功能將第一次發(fā)送的參數(shù)緩存在瀏覽器內(nèi)部,當(dāng)通訊接收 方接收跨域傳遞請(qǐng)求時(shí)直接在瀏覽器緩存中提取結(jié)果數(shù)據(jù)。本發(fā)明實(shí)施例提供的跨域通訊方法的流程圖如圖3所示,具體包括以
下步驟
5301、 通訊雙方服務(wù)器各部署兩個(gè)頁(yè)面文件, 一個(gè)用于接受請(qǐng)求的頁(yè) 面ASK, 一個(gè)用于回送響應(yīng)的頁(yè)面ACK。部署兩個(gè)頁(yè)面文件可以完成雙 向請(qǐng)求通訊。
需要說(shuō)明的是,接受請(qǐng)求的ASK頁(yè)面一般是靜態(tài)頁(yè)面,在需要附加額 外的HTTP (HyperText Markup Language,超文本傳輸協(xié)議)頭信息時(shí)也 可以是動(dòng)態(tài)頁(yè)面。而回送響應(yīng)的ACK頁(yè)面可以完全是靜態(tài)頁(yè)面。ASK頁(yè) 面和ACK頁(yè)面是雙方通訊的基本頁(yè)面。當(dāng)通ifl發(fā)生時(shí),通訊的雙方會(huì)相 互^青求這些基礎(chǔ)頁(yè)面。這兩個(gè)用于通iK的頁(yè)面祐:鄉(xiāng)充稱為通ifl頁(yè)面。
該步驟中需要兩個(gè)通訊頁(yè)面的請(qǐng)求才各式。這個(gè)格式必須是通訊雙方都 需要遵守的,因此是通訊協(xié)議的一部分。其中,需要注意的是可以使用 GET形式請(qǐng)求頁(yè)面,并且通訊的命令和數(shù)據(jù)一般不能用URL的參數(shù)形式 傳遞。
5302、 當(dāng)從一個(gè)網(wǎng)站的原頁(yè)面中發(fā)出對(duì)不同^l的另 一網(wǎng)站的通訊請(qǐng)求 時(shí),原頁(yè)面所在的瀏覽器會(huì)打開一個(gè)隱含頁(yè)面,并利用該隱含頁(yè)面去打開 對(duì)方服務(wù)器部署的ASK頁(yè)面,并將請(qǐng)求命令和參數(shù)傳遞過(guò)去。
其中,打開隱藏頁(yè)面的方式有打開不可見(jiàn)新窗口或打開不可見(jiàn)的 iframe。
其中,請(qǐng)求命令使用附加在URL上的片段標(biāo)識(shí)符形式來(lái)傳遞,而數(shù)據(jù) 可以使用window對(duì)象的name屬性來(lái)傳遞。
具體的URL上附加的片段標(biāo)識(shí)符就是在一個(gè)URL之后添加一個(gè)"#,, 號(hào),后跟任意字符串。片段標(biāo)識(shí)符用于在一個(gè)頁(yè)面上定位到指定的錨點(diǎn)(閱 讀位置),屬于客戶端處理,而非服務(wù)器處理。URL中的片段標(biāo)識(shí)符發(fā)生 的任何變化,對(duì)于服務(wù)器來(lái)說(shuō)是相同的URL,而瀏覽器先天具有對(duì)相同 URL頁(yè)面的緩存機(jī)制。因此,除第一次請(qǐng)求這兩個(gè)頁(yè)面時(shí)會(huì)往返服務(wù)器之 外,以后對(duì)這兩個(gè)頁(yè)面的請(qǐng)求都只會(huì)從瀏覽器的客戶端緩存中讀取,不會(huì) 有往返服務(wù)器的開銷。
ii5303、 對(duì)方的ASK頁(yè)面在收到請(qǐng)求后,執(zhí)行相應(yīng)的服務(wù)并取得結(jié)果數(shù)據(jù)。
5304、 對(duì)方的ASK頁(yè)面會(huì)打開一個(gè)隱含的新頁(yè)面或用自己所在的頁(yè) 面,打開原域網(wǎng)站的ACK頁(yè)面,并將取得的結(jié)果數(shù)據(jù)傳到原域網(wǎng)站的ACK 頁(yè)面。
瀏覽器安全隔離機(jī)制禁止一個(gè)域的頁(yè)面的程序直接操作另 一個(gè)頁(yè)面的 內(nèi)容和數(shù)據(jù)。但是, 一個(gè)域的頁(yè)面可以在打開另一個(gè)域的頁(yè)面時(shí),將數(shù)據(jù) 通過(guò)URL或window對(duì)象的name屬性等方式,將婆史據(jù)傳遞給對(duì)方頁(yè)面。
5305、 原域網(wǎng)站的ACK頁(yè)面將接收的結(jié)果數(shù)據(jù)傳回原頁(yè)面。 上述步驟可以用一個(gè)例子加以說(shuō)明,例如 一個(gè)對(duì)ASK頁(yè)面的典型請(qǐng)
求如下
m
通過(guò)該請(qǐng)求,向 htt。:〃www.alisoft.com/ASK.HTM 頁(yè)面請(qǐng)求 envoyl23@www.isv.com的用戶名(GetUserName )。 一個(gè)對(duì)ACK頁(yè)面的典型回送如下 http:〃www.isv.com/ACK.HTM#envoyl23
通過(guò)該回送,向http:〃www.isv.com/ACK.HTM頁(yè)面發(fā)送字符串 頃ovl23作為對(duì)上述請(qǐng)求的響應(yīng)
需要注意的是,步驟s305實(shí)現(xiàn)的前提是由于此時(shí)的ACK頁(yè)面和原頁(yè) 面是處在同一個(gè)域中,因此可以訪問(wèn)到原頁(yè)面,從而將結(jié)果數(shù)據(jù)傳遞給原 頁(yè)面。
上述步驟中,請(qǐng)求和回送的數(shù)據(jù)都是以JSON格式的字符串形式來(lái)傳 遞的。JSON格式是JavaScript語(yǔ)言原生的數(shù)據(jù)表示形式,具有形式簡(jiǎn)單、 格式緊湊和轉(zhuǎn)換方便等優(yōu)點(diǎn)。
請(qǐng)求和回送的數(shù)據(jù)可以通過(guò)window對(duì)象的name屬性來(lái)傳遞,這樣可 以傳遞很大的數(shù)據(jù)信息。也可通過(guò)全部采用片段標(biāo)識(shí)符傳遞數(shù)據(jù)。
需要說(shuō)明的是,為了方便開發(fā)人員使用,可以將上述數(shù)據(jù)參數(shù)封裝成一系列JavaScript函數(shù),提供給開發(fā)人員調(diào)用。
以下給出 一個(gè)函數(shù)形式的示例來(lái)說(shuō)明上述功能。
function envoy ( domainName, serviceName, onSuccess, onError )
domainName -要通i凡的i或名
serviceName —要^青求的月l務(wù)名
onSuccess —成功回調(diào)函婆t
onError —失敗回調(diào)函l史
通過(guò)使用本發(fā)明完全遵循瀏覽器域安全隔離機(jī)制,并且不需要用戶降 低安全級(jí)別、沒(méi)有URL頁(yè)面跳轉(zhuǎn)以及不會(huì)頻繁請(qǐng)求服務(wù)器,并且保證通訊 雙方有公平和對(duì)稱的安全保護(hù),實(shí)現(xiàn)不同域之間安全通訊。
本發(fā)明實(shí)施例二中提供一種跨域通訊的方法,該方法的流程圖如圖4 所示,具體包括以下步驟
5401、 通訊雙方服務(wù)器各部署一個(gè)頁(yè)面文件,用于接受請(qǐng)求和響應(yīng)請(qǐng) 求。為了便于描述并基于上述部署的頁(yè)面文件的功能把接收請(qǐng)求的頁(yè)面稱 為ASK頁(yè)面和回送響應(yīng)的頁(yè)面稱為ACK頁(yè)面。該頁(yè)面文件可以為靜態(tài)頁(yè) 面,也可以是動(dòng)態(tài)頁(yè)面。
該步驟中需要一個(gè)通訊頁(yè)面的請(qǐng)求格式。這個(gè)格式必須是通訊雙方都 需要遵守的,因此是通訊協(xié)議的一部分。其中,需要說(shuō)明的是可以GET 形式請(qǐng)求頁(yè)面,并且通訊的命令和數(shù)據(jù)一般不能用URL的參數(shù)形式傳遞。
5402、 當(dāng)從一個(gè)網(wǎng)站的原頁(yè)面中發(fā)出對(duì)不同域的另 一 網(wǎng)站的通訊請(qǐng)求 時(shí),原頁(yè)面所在的瀏覽器會(huì)打開一個(gè)隱含頁(yè)面,并利用該隱含頁(yè)面去打開 對(duì)方服務(wù)器部署的ASK頁(yè)面,并將請(qǐng)求命令和參數(shù)傳遞過(guò)去。
該步驟中,打開隱含頁(yè)面的方式有打開不可見(jiàn)新窗口,打開不可見(jiàn) 的iframe。
其中,請(qǐng)求命令使用附加在URL上的片段標(biāo)識(shí)符形式來(lái)傳遞,而數(shù)據(jù) 可以使用window對(duì)象的name屬性來(lái)傳遞。
具體的URL上附加的片段標(biāo)識(shí)符就是在一個(gè)URL之后添加一個(gè)"#"號(hào),后跟任意字符串。片段標(biāo)識(shí)符用于在一個(gè)頁(yè)面上定位到指定的錨點(diǎn)(閱
讀位置),屬于客戶端處理,而非服務(wù)器處理。URL中的片段標(biāo)識(shí)符發(fā)生 的任何變化,對(duì)于服務(wù)器來(lái)說(shuō)是相同的URL,而瀏覽器先天具有對(duì)相同 URL頁(yè)面的緩存機(jī)制。因此,除第一次請(qǐng)求這兩個(gè)頁(yè)面時(shí)會(huì)往返服務(wù)器之 外,以后對(duì)這兩個(gè)頁(yè)面的請(qǐng)求都只會(huì)從瀏覽器的客戶端緩存中讀取,不會(huì) 有往返服務(wù)器的開銷。
5403、 對(duì)方的ASK頁(yè)面在收到請(qǐng)求后,執(zhí)行相應(yīng)的服務(wù)并取得結(jié)果數(shù)據(jù)。
5404、 對(duì)方的ASK頁(yè)面會(huì)打開一個(gè)隱含的新頁(yè)面或用自己所在的頁(yè) 面,打開原域網(wǎng)站的ACK頁(yè)面,并將取得的結(jié)果數(shù)據(jù)傳到原域網(wǎng)站的ACK 頁(yè)面。
5405、 原域網(wǎng)站的ACK頁(yè)面將接收的結(jié)果數(shù)據(jù)傳回原頁(yè)面。 該步驟實(shí)現(xiàn)的前提是由于此時(shí)的ACK頁(yè)面和原頁(yè)面是處在同一個(gè)域
中,因此可以訪問(wèn)到原頁(yè)面,從而將結(jié)果數(shù)據(jù)傳遞給原頁(yè)面
上述步驟中,請(qǐng)求和回送的數(shù)據(jù)都是以JSON格式的字符串形式來(lái)傳 遞的。JSON格式是JavaScript語(yǔ)言原生的數(shù)據(jù)表示形式,具有形式簡(jiǎn)單、
格式緊湊和轉(zhuǎn)換方便等優(yōu)點(diǎn)。
請(qǐng)求和回送的數(shù)據(jù)可以通過(guò)window對(duì)象的name屬性來(lái)傳遞,這樣可 以傳遞很大的數(shù)據(jù)信息。也可通過(guò)全部采用片段標(biāo)識(shí)符傳遞數(shù)據(jù)。
需要說(shuō)明的是,為了方便開發(fā)人員使用,可以將上述數(shù)據(jù)參數(shù)封裝成 一系列JavaScript函數(shù),提供給開發(fā)人員調(diào)用。
通過(guò)使用本發(fā)明完全遵循瀏覽器域安全隔離機(jī)制,并且不需要用戶降 低安全級(jí)別、沒(méi)有URL頁(yè)面跳轉(zhuǎn)以及不會(huì)頻繁請(qǐng)求服務(wù)器,并且保證通訊 雙方有公平和對(duì)稱的安全保護(hù),實(shí)現(xiàn)不同域之間安全通訊。
本發(fā)明實(shí)施例還提供一種跨域通訊的系統(tǒng),如圖5所述,包括發(fā)送 方100和接收方200,所述發(fā)送方100與所述接收方200位于不同的域中;
所述發(fā)送方100,用于向所述接收方200中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng) 求;并通過(guò)本地用于接收數(shù)據(jù)的頁(yè)面,接收所述^l妄收方200中用于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);從所述本地用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng)。
所述接收方200,用于通過(guò)用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方100發(fā)送
的請(qǐng)求,處理所述接收方100發(fā)送的請(qǐng)求并得到響應(yīng),并通過(guò)用于發(fā)送數(shù)據(jù)
的頁(yè)面,向所述發(fā)送方IOO接收數(shù)據(jù)的頁(yè)面發(fā)送所述響應(yīng)。
本發(fā)明實(shí)施例還提供一種跨域通訊的裝置,用于作為發(fā)送方與位于不同
域中的接收方交互數(shù)據(jù),如圖6所示。包括請(qǐng)求發(fā)送單元10、響應(yīng)接收單
元20以及數(shù)據(jù)獲取單元30;
所述請(qǐng)求發(fā)送單元10,用于向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)
求;
所述響應(yīng)接收單元20,用于通過(guò)接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用 于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);
所述數(shù)據(jù)獲取單元30,用于從所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面中獲取 所述響應(yīng)。
其中,所述請(qǐng)求單元10還包括發(fā)送數(shù)據(jù)頁(yè)面和接收數(shù)據(jù)頁(yè)面; 所述發(fā)送數(shù)據(jù)頁(yè)面,用于通過(guò)所述用于發(fā)送數(shù)據(jù)的頁(yè)面將請(qǐng)求命令和數(shù) 據(jù)向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送。
所述接收數(shù)據(jù)頁(yè)面,用于接收接收方發(fā)送的響應(yīng)。
其中,所述發(fā)送數(shù)據(jù)頁(yè)面與所述接收數(shù)據(jù)頁(yè)面為不同頁(yè)面或?yàn)橥豁?yè)面。
^靜態(tài)頁(yè)面。
本發(fā)明實(shí)施例還提供一種跨域通訊的裝置,用于作為接收方與位于不同 域中的發(fā)送方交互數(shù)據(jù),如圖7所示。包括請(qǐng)求接收單元40、處理單元50 以及響應(yīng)發(fā)送單元60;
所述請(qǐng)求接收單元40,用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求; 所述處理單元50,用于處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng);
所述響應(yīng)發(fā)送單元60,用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的 頁(yè)面發(fā)送所述響應(yīng)。
其中,所述請(qǐng)求接收單元40包括接收數(shù)據(jù)的頁(yè)面用于接收所述請(qǐng)求命
15令和凄史據(jù);
發(fā)送數(shù)據(jù)的頁(yè)面,用于將所述請(qǐng)求命令和數(shù)據(jù)發(fā)送到所述處理單元
其中,請(qǐng)求接收單元40還包括接收數(shù)據(jù)的頁(yè)面和發(fā)送數(shù)據(jù)的頁(yè)面;
所述接收數(shù)據(jù)的頁(yè)面用于接收所述請(qǐng)求命令和數(shù)據(jù);
所述發(fā)送數(shù)據(jù)的頁(yè)面用于向所述發(fā)送方的接收數(shù)據(jù)的頁(yè)面發(fā)送響應(yīng)。其
并且所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為動(dòng)態(tài)頁(yè)面或靜態(tài)頁(yè)面。
通過(guò)使用本發(fā)明完全遵循瀏覽器域安全隔離機(jī)制,并且不需要用戶降 低安全級(jí)別、沒(méi)有URL頁(yè)面跳轉(zhuǎn)以及不會(huì)頻繁請(qǐng)求服務(wù)器,并且保證通訊 雙方有公平和對(duì)稱的安全保護(hù),實(shí)現(xiàn)不同域名間安全通訊。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本 發(fā)明可以通過(guò)硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái) 實(shí)現(xiàn)基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái), 該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是CD-ROM, U盤, 移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì) 算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的 普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn) 和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種跨域通訊的方法,應(yīng)用于包括發(fā)起方和接收方的系統(tǒng)中,所述發(fā)起方和接收方位于不同的域中,其特征在于,包括所述發(fā)送方向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求;所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);所述發(fā)送方從所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng)。
2、 如權(quán)利要求l所述的方法,其特征在于,所述接收數(shù)據(jù)的頁(yè)面與所述發(fā)送數(shù)據(jù)的頁(yè)面具體為所述發(fā)起方和所述接收方服務(wù)器在跨域通訊前部署的頁(yè)面文件。
3、 如權(quán)利要求l所述的方法,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為不同頁(yè)面或?yàn)橥豁?yè)面。
4、 如權(quán)利要求l所述的方法,其特征在于,所述發(fā)送方向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求包括所述發(fā)送方打開一個(gè)用于發(fā)送數(shù)據(jù)的隱含頁(yè)面,通過(guò)所述用于發(fā)送數(shù)據(jù)的頁(yè)面將請(qǐng)求命令和數(shù)據(jù)向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送。
5、 如權(quán)利要求4所述的方法,其特征在于,所述隱含頁(yè)面打開的方式包 括打開不可見(jiàn)窗口或打開不可見(jiàn)的iframe。
6、 如權(quán)利要求1所述的方法,其特征在于,所述請(qǐng)求命令和數(shù)據(jù)通過(guò)GET形式攜帶。
7、 如權(quán)利要求l所述的方法,其特征在于,所述請(qǐng)求命令使用附加在統(tǒng)一資源定位符URL上的片段標(biāo)識(shí)符形式傳遞;所述數(shù)據(jù)使用window對(duì)象的name屬性傳遞或采用片段標(biāo)識(shí)符來(lái)傳遞。
8、 如權(quán)利要求l所述的方法,其特征在于,所述請(qǐng)求和響應(yīng)的數(shù)據(jù)使用JSON格式的字符串形式傳遞。
9、 如權(quán)利要求l所述的方法,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為動(dòng)態(tài)頁(yè)面或靜態(tài)頁(yè)面。
10、 一種跨域通訊的方法,應(yīng)用于包括發(fā)起方和接收方的系統(tǒng)中,所述發(fā)起方和接收方位于不同的域中,其特征在于,包括所述接收方中用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求;所述接收方處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng);所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的頁(yè)面發(fā)送所述響應(yīng)。
11、 如權(quán)利要求IO所述的方法,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為不同頁(yè)面或?yàn)橥豁?yè)面。
12、 如權(quán)利要求IO所述的方法,其特征在于,所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的頁(yè)面發(fā)送所述響應(yīng)具體包括所述接收方接收數(shù)據(jù)的頁(yè)面直接打開所述發(fā)送方接收數(shù)據(jù)的頁(yè)面并響應(yīng)請(qǐng)求5或,所述接收方打開一個(gè)用于發(fā)送數(shù)據(jù)的隱含頁(yè)面,并利用所述隱含頁(yè)面打開發(fā)送方接收數(shù)據(jù)的頁(yè)面并響應(yīng)請(qǐng)求。
13、 如權(quán)利要求12所述的方法,其特征在于,所述隱含頁(yè)面打開的方式包括打開不可見(jiàn)窗口或打開不可見(jiàn)的iframe。
14、 如權(quán)利要求IO所述的方法,其特征在于,所述響應(yīng)使用附加在統(tǒng)一資源定位符URL上的片段標(biāo)識(shí)符形式傳遞;所述數(shù)據(jù)使用window對(duì)象的name屬性傳遞或采用片^殳標(biāo)識(shí)符來(lái)傳遞。
15、 如權(quán)利要求IO所述的方法,其特征在于,所述響應(yīng)的數(shù)據(jù)使用JSON格式的字符串形式傳遞。
16、 如權(quán)利要求IO所述的方法,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為動(dòng)態(tài)頁(yè)面或靜態(tài)頁(yè)面。
17、 一種跨域通訊的系統(tǒng),其特征在于,包括發(fā)送方和接收方,所述發(fā)送方與所述接收方位于不同的域中;所述發(fā)送方,用于向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求;并通過(guò)本地用于接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);從所述本地用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng);所述接收方,用于通過(guò)用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求,處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng),并通過(guò)用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的頁(yè)面發(fā)送所述響應(yīng)。
18、 一種跨域通訊的裝置,用于作為發(fā)送方與位于不同域中的接收方交互數(shù)據(jù),其特征在于,包括請(qǐng)求發(fā)送單元、響應(yīng)接收單元以及數(shù)據(jù)獲取單元;所述請(qǐng)求發(fā)送單元,用于向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求;所述響應(yīng)接收單元,用于通過(guò)接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);所述數(shù)據(jù)獲取單元,用于從所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng)。
19、 如權(quán)利要求18所述的裝置,其特征在于,所述請(qǐng)求發(fā)送單元包括發(fā)送數(shù)據(jù)的頁(yè)面,用于通過(guò)所述用于發(fā)送數(shù)據(jù)的頁(yè)面將請(qǐng)求命令和數(shù)據(jù)向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送。接收數(shù)據(jù)的頁(yè)面,用于通過(guò)所述用于接收數(shù)據(jù)的頁(yè)面接收響應(yīng)。
20、 如權(quán)利要求18所述的裝置,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為不同頁(yè)面或?yàn)橥豁?yè)面。
21、 如權(quán)利要求18所述的裝置,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為動(dòng)態(tài)頁(yè)面或靜態(tài)頁(yè)面。
22、 一種跨域通訊的裝置,用于作為接收方與位于不同域中的發(fā)送方交互數(shù)據(jù),其特征在于,包括請(qǐng)求接收單元、處理單元以及響應(yīng)發(fā)送單元;所述請(qǐng)求接收單元,用于接收數(shù)據(jù)的頁(yè)面接收所述發(fā)送方發(fā)送的請(qǐng)求;所述處理單元,用于處理所述接收方發(fā)送的請(qǐng)求并得到響應(yīng);所述響應(yīng)發(fā)送單元,用于發(fā)送數(shù)據(jù)的頁(yè)面,向所述發(fā)送方接收數(shù)據(jù)的頁(yè)面發(fā)送所述響應(yīng)。
23、 如權(quán)利要求22所述的裝置,其特征在于,所述請(qǐng)求接收單元包括接收數(shù)據(jù)的頁(yè)面,用于接收所述發(fā)送方發(fā)送的請(qǐng)求命令和數(shù)據(jù);發(fā)送數(shù)據(jù)的頁(yè)面,用于向所述發(fā)送方的接收數(shù)據(jù)的頁(yè)面發(fā)送響應(yīng)。
24、 如權(quán)利要求22所述的裝置,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收數(shù)據(jù)的頁(yè)面為不同頁(yè)面或?yàn)橥豁?yè)面。
25、如權(quán)利要求22所述的裝置,其特征在于,所述發(fā)送數(shù)據(jù)的頁(yè)面與所述接收^據(jù)的頁(yè)面為動(dòng)態(tài)頁(yè)面或靜態(tài)頁(yè)面。
全文摘要
本發(fā)明公開了一種跨域通訊的方法、系統(tǒng)和裝置。所述方法應(yīng)用于包括發(fā)起方和接收方的系統(tǒng)中,所述發(fā)起方和接收方位于不同的域中,包括所述發(fā)送方向所述接收方中用于接收數(shù)據(jù)的頁(yè)面發(fā)送請(qǐng)求;所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面,接收所述接收方中用于發(fā)送數(shù)據(jù)的頁(yè)面發(fā)送的響應(yīng);所述發(fā)送方從所述發(fā)送方中用于接收數(shù)據(jù)的頁(yè)面中獲取所述響應(yīng)。通過(guò)使用本發(fā)明實(shí)現(xiàn)了在保證瀏覽的域安全隔離前提下,實(shí)現(xiàn)不同域名間安全通訊。
文檔編號(hào)H04L29/06GK101662460SQ200810147259
公開日2010年3月3日 申請(qǐng)日期2008年8月25日 優(yōu)先權(quán)日2008年8月25日
發(fā)明者李戰(zhàn)園 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司