欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Jsonp請(qǐng)求方法及裝置的制造方法

文檔序號(hào):10626862閱讀:341來(lái)源:國(guó)知局
Jsonp請(qǐng)求方法及裝置的制造方法
【專利摘要】本申請(qǐng)公開了一種JSONP請(qǐng)求方法及裝置,其中方法包括:第一域頁(yè)面所在瀏覽器確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源;所述瀏覽器在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源;所述瀏覽器通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求;所述瀏覽器通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源;所述瀏覽器通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面。本申請(qǐng)可以保證JSONP請(qǐng)求過(guò)程中訪問(wèn)者的頁(yè)面的安全性,可以節(jié)省網(wǎng)絡(luò)帶寬資源和維護(hù)成本,能夠支持各種類型的瀏覽器。
【專利說(shuō)明】
JSONP請(qǐng)求方法及裝置
技術(shù)領(lǐng)域
[0001]本申請(qǐng)涉及網(wǎng)頁(yè)技術(shù)領(lǐng)域,尤其涉及JSONP請(qǐng)求方法及裝置。
【背景技術(shù)】
[0002]JSON(JavaScript Object Notat1n)是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于JavaScript (Standard ECMA_2623rd Edit1n-December 1999)的一個(gè)子集。JSON 米用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C,C++,C#’ Java,JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成(網(wǎng)絡(luò)傳輸速度快)。
[0003]JSONP (JSON with Padding)是JSON的一種“使用模式”,可以讓網(wǎng)頁(yè)從別的網(wǎng)域要資料,可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問(wèn)的問(wèn)題。JavaScript出于安全方面的考慮,不允許跨域調(diào)用其他頁(yè)面的對(duì)象。但在安全限制的同時(shí)也給注入iframe或是ajax應(yīng)用上帶來(lái)了不少麻煩。瀏覽器的同源策略,即只有相同域名、協(xié)議、端口的兩個(gè)站點(diǎn)才能互相訪問(wèn)D0M。由于同源策略,一般來(lái)說(shuō)位于serverl.example, com的網(wǎng)頁(yè)無(wú)法與不是serverl.example, com的服務(wù)器溝通,而HTML的〈script〉元素是一個(gè)例外。利用〈script〉元素的這個(gè)開放策略,網(wǎng)頁(yè)可以得到從其他來(lái)源動(dòng)態(tài)產(chǎn)生的JSON資料,而這種使用模式就是所謂的JS0NP。用JSONP抓到的資料并不是JS0N,而是任意的JavaScript,用JavaScript直譯器執(zhí)行而不是用JSON解析器解析。
[0004]JSONP是一種常見的請(qǐng)求的方式,但因?yàn)镴SONP訪問(wèn)實(shí)際是需要在訪問(wèn)者的頁(yè)面上插入被訪問(wèn)者的腳本資源,而如果這些腳本資源被修改成為不安全的代碼則會(huì)讓訪問(wèn)者受到攻擊,所以使用JSONP存在一定的風(fēng)險(xiǎn)。例如,跨網(wǎng)站腳本(Cross-site scripting,通常簡(jiǎn)稱為XSS或跨站腳本或跨站腳本攻擊)等。XSS攻擊是一種網(wǎng)站應(yīng)用程序的安全漏洞攻擊,是代碼注入的一種。它允許惡意用戶將代碼注入到網(wǎng)頁(yè)上,其他用戶在觀看網(wǎng)頁(yè)時(shí)就會(huì)受到影響。XSS攻擊通常用于利用網(wǎng)頁(yè)開發(fā)時(shí)留下的漏洞,通過(guò)巧妙的方法注入惡意指令代碼到網(wǎng)頁(yè),使用戶加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁(yè)程序。這些惡意網(wǎng)頁(yè)程序通常是JavaScript,但實(shí)際上也可以包括Java,VBScript, ActiveX,F(xiàn)lash或者甚至是普通的HTML。攻擊成功后,攻擊者可能得到更高的權(quán)限(如執(zhí)行一些操作)、私密網(wǎng)頁(yè)內(nèi)容、會(huì)話和cookie等各種內(nèi)容。
[0005]這種情況常見于運(yùn)營(yíng)活動(dòng)需要訪問(wèn)第三方JSONP資源,當(dāng)?shù)谌骄W(wǎng)站收到攻擊后,發(fā)起訪問(wèn)的站點(diǎn)也將受到攻擊。例如,當(dāng)被訪問(wèn)的JSONP資源站點(diǎn)受到攻擊,則很容易讓發(fā)起訪問(wèn)的站點(diǎn)受到攻擊(用戶cookie被盜等)。如A站點(diǎn)發(fā)起JSONP請(qǐng)求B站點(diǎn),當(dāng)B站點(diǎn)的JSONP資源被修改成為有危害性的代碼,這些代碼會(huì)通過(guò)JSONP請(qǐng)求在A站點(diǎn)頁(yè)面上執(zhí)行,從而讓A站點(diǎn)收到攻擊。
[0006]現(xiàn)有技術(shù)中對(duì)于JSONP請(qǐng)求的安全性,采用制定MIME-type ("applicat1n/json-p〃and/or〃text/json-p〃)的方式,讓瀏覽器知道請(qǐng)求的類型是JS0NP,再讓瀏覽器去檢測(cè)是否是這樣的格式:
[0007]funct1nName({JSON});
[0008]obj.funct1nName({JSON});
[0009]obj["funct1n-name"]({JSON});
[0010]然而,這種制定MME-type的方式需要瀏覽器支持,但是現(xiàn)有瀏覽器支持的并不好,而老的瀏覽器更是無(wú)法支持。同時(shí),需要JSONP服務(wù)器修改M頂E-type類型。
[0011]現(xiàn)有技術(shù)中還提供一種代理服務(wù)器的方式來(lái)保證JSON請(qǐng)求的安全性,該方式采用代理服務(wù)器去執(zhí)行JSONP請(qǐng)求,之后由代理服務(wù)器驗(yàn)證請(qǐng)求返回的數(shù)據(jù)格式,驗(yàn)證通過(guò)后再將返回?cái)?shù)據(jù)提供給訪問(wèn)者。然而,這種以服務(wù)器作為代理發(fā)起JSONP請(qǐng)求的方式,需要一個(gè)服務(wù)器去請(qǐng)求JS0NP,之后驗(yàn)證返回的內(nèi)容,驗(yàn)證通過(guò)后返回給發(fā)起調(diào)用的頁(yè)面,將額外占用網(wǎng)絡(luò)帶寬,耗費(fèi)網(wǎng)絡(luò)資源,提高維護(hù)成本。

【發(fā)明內(nèi)容】

[0012]在本申請(qǐng)的一個(gè)實(shí)施例中提供一種JSONP請(qǐng)求方法,用以保證JSONP請(qǐng)求過(guò)程中訪問(wèn)者的頁(yè)面的安全性,該方法包括:
[0013]第一域頁(yè)面所在瀏覽器確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源;
[0014]所述瀏覽器在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源;
[0015]所述瀏覽器通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求;
[0016]所述瀏覽器通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源;
[0017]所述瀏覽器通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面。
[0018]在本申請(qǐng)的另一實(shí)施例中提供一種JSONP請(qǐng)求裝置,用以保證JSONP請(qǐng)求過(guò)程中訪問(wèn)者的頁(yè)面的安全性,該裝置應(yīng)用于第一域頁(yè)面所在瀏覽器,該裝置包括:
[0019]調(diào)用確定模塊,用于確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源;
[0020]頁(yè)面嵌入模塊,用于在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源;
[0021]請(qǐng)求發(fā)起模塊,用于通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求;
[0022]數(shù)據(jù)接收模塊,用于通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源;
[0023]數(shù)據(jù)傳輸模塊,用于通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面。
[0024]本申請(qǐng)的實(shí)施例中,在第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源時(shí),第一域頁(yè)面所在瀏覽器在第一域頁(yè)面嵌入與第一域頁(yè)面不同源的第三域頁(yè)面,通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求,再通過(guò)第三域頁(yè)面接收第二域頁(yè)面資源并跨域傳輸?shù)诙蝽?yè)面資源至第一域頁(yè)面,使第一域頁(yè)面避免執(zhí)行第二域頁(yè)面資源可能的攻擊性腳本,保證了第一域頁(yè)面的安全性;在此過(guò)程中,JSONP請(qǐng)求的發(fā)起方仍是第一域頁(yè)面所在瀏覽器,無(wú)需單獨(dú)建立一個(gè)代理服務(wù)器去發(fā)起JSONP請(qǐng)求,不必額外占用網(wǎng)絡(luò)帶寬和耗費(fèi)網(wǎng)絡(luò)資源,節(jié)省了維護(hù)成本;并且能夠支持各種類型的瀏覽器,也不需要JSONP服務(wù)器修改M頂E-type類型。
【附圖說(shuō)明】
[0025]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中:
[0026]圖1為現(xiàn)有技術(shù)中常規(guī)的JSONP調(diào)用流程示例圖;
[0027]圖2為本申請(qǐng)實(shí)施例中JSONP調(diào)用流程的示例圖;
[0028]圖3為本申請(qǐng)實(shí)施例中JSONP請(qǐng)求方法的流程圖;
[0029]圖4為本申請(qǐng)實(shí)施例中JSONP請(qǐng)求裝置的示意圖。
【具體實(shí)施方式】
[0030]為使本申請(qǐng)實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖對(duì)本申請(qǐng)實(shí)施例做進(jìn)一步詳細(xì)說(shuō)明。在此,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),但并不作為對(duì)本申請(qǐng)的限定。
[0031]本申請(qǐng)實(shí)施例提供一種安全的JSONP請(qǐng)求方法,避免JSONP請(qǐng)求可能帶來(lái)的攻擊(XSS攻擊等,這種情況常見于運(yùn)營(yíng)活動(dòng)需要訪問(wèn)第三方JSONP資源,當(dāng)?shù)谌骄W(wǎng)站收到攻擊后,發(fā)起訪問(wèn)的站點(diǎn)也將受到攻擊)。下面通過(guò)對(duì)比現(xiàn)有技術(shù)詳細(xì)說(shuō)明本申請(qǐng)的JSONP請(qǐng)求方法。
[0032]圖1為現(xiàn)有技術(shù)中常規(guī)的JSONP調(diào)用流程示例圖。如圖1所示,本例中JSONP調(diào)用流程可以包括:
[0033]步驟101、A域頁(yè)面所在瀏覽器確定A域頁(yè)面需要通過(guò)JSONP方式調(diào)用B域頁(yè)面資源;
[0034]步驟102、A域頁(yè)面向B域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起調(diào)用B域頁(yè)面資源的JSONP請(qǐng)求;該JSONP請(qǐng)求由A域頁(yè)面所在瀏覽器通過(guò)A域頁(yè)面發(fā)起;
[0035]步驟103、B域頁(yè)面對(duì)應(yīng)服務(wù)器向A域頁(yè)面返回B域頁(yè)面資源;
[0036]步驟104、A域頁(yè)面獲得B域頁(yè)面資源。
[0037]圖1所示流程中,A域頁(yè)面直接向B域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起調(diào)用B域頁(yè)面資源的JSONP請(qǐng)求,在此過(guò)程中,A域頁(yè)面將執(zhí)行B域頁(yè)面資源腳本,若B域頁(yè)面資源腳本中包含攻擊性腳本,則A域頁(yè)面將受到攻擊。本例中,若使用代理服務(wù)器的方式避免A域頁(yè)面受到攻擊,則需單獨(dú)建立一代理服務(wù)器,由代理服務(wù)器代替A域頁(yè)面向B域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起JSONP請(qǐng)求,當(dāng)B域頁(yè)面對(duì)應(yīng)服務(wù)器向代理服務(wù)器返回B域頁(yè)面資源后,代理服務(wù)器驗(yàn)證返回的數(shù)據(jù)格式,驗(yàn)證通過(guò)后再將返回?cái)?shù)據(jù)提供給A域頁(yè)面,驗(yàn)證不通過(guò)則報(bào)錯(cuò)。雖然代理服務(wù)器的方式避免了 A域頁(yè)面因執(zhí)行B域頁(yè)面資源腳本而受到攻擊,并以驗(yàn)證的方式在一定程度上保證了數(shù)據(jù)安全,但是需要單獨(dú)建立一服務(wù)器作為代理來(lái)完成整個(gè)JSONP請(qǐng)求過(guò)程,服務(wù)器發(fā)起請(qǐng)求、接收數(shù)據(jù)等均需要額外占用網(wǎng)絡(luò)帶寬,耗費(fèi)網(wǎng)絡(luò)資源,這也使得維護(hù)成本大大提尚。
[0038]下面再來(lái)看本申請(qǐng)的JSONP調(diào)用流程示例。
[0039]圖2為本申請(qǐng)中JSONP調(diào)用流程的示例圖。如圖2所示,本例中JSONP調(diào)用流程可以包括:
[0040]步驟201、A域頁(yè)面所在瀏覽器確定A域頁(yè)面需要通過(guò)JSONP方式調(diào)用B域頁(yè)面資源;
[0041]步驟202、A域頁(yè)面所在瀏覽器在A域頁(yè)面中嵌入C域頁(yè)面;
[0042]步驟203、A域頁(yè)面所在瀏覽器通過(guò)C域頁(yè)面向B域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起調(diào)用B域頁(yè)面資源的JSONP請(qǐng)求;
[0043]步驟204、B域頁(yè)面對(duì)應(yīng)服務(wù)器向C域頁(yè)面返回B域頁(yè)面資源;
[0044]步驟205、C域頁(yè)面獲得B域頁(yè)面資源;
[0045]步驟206、A域頁(yè)面所在瀏覽器通過(guò)C域頁(yè)面將B域頁(yè)面資源傳給A域頁(yè)面;
[0046]步驟207、A域頁(yè)面獲得B域頁(yè)面資源。
[0047]圖2所示流程中,A域頁(yè)面需要調(diào)用B域頁(yè)面資源時(shí),A域頁(yè)面不直接向B域頁(yè)面所在服務(wù)器發(fā)起調(diào)用B域頁(yè)面資源的JSONP請(qǐng)求,而是由A域頁(yè)面所在瀏覽器在A域頁(yè)面中嵌入C域頁(yè)面,通過(guò)C域頁(yè)面向B域頁(yè)面所在服務(wù)器發(fā)起調(diào)用B域頁(yè)面資源的JSONP請(qǐng)求,C域頁(yè)面在接收到B域頁(yè)面資源后,再向A域頁(yè)面?zhèn)魉虰域頁(yè)面資源。在此過(guò)程中,A域頁(yè)面不執(zhí)行B域頁(yè)面資源腳本,而是由發(fā)起JSONP請(qǐng)求的C域頁(yè)面執(zhí)行B域頁(yè)面資源腳本,在C域頁(yè)面與A域頁(yè)面不同源的情況下,C域頁(yè)面通過(guò)跨域數(shù)據(jù)傳輸將B域頁(yè)面資源提供給A域頁(yè)面,從而避免了 A域頁(yè)面因執(zhí)行B域頁(yè)面資源腳本而受到攻擊。完成整個(gè)JSONP請(qǐng)求處理過(guò)程均是由A域頁(yè)面所在瀏覽器進(jìn)行,無(wú)需建立代理服務(wù)器,這樣就無(wú)需額外占用網(wǎng)絡(luò)帶寬和耗費(fèi)網(wǎng)絡(luò)資源,節(jié)省了維護(hù)成本。
[0048]圖2流程處理過(guò)程中需要保證的是,C域頁(yè)面和A域頁(yè)面不同源,這樣才能利用瀏覽器的同源策略保護(hù)A域頁(yè)面內(nèi)容。圖2流程可直接用于現(xiàn)有JSONP請(qǐng)求的應(yīng)用中。通過(guò)在另外的域下建立一個(gè)中間代理頁(yè)面(而不是代理服務(wù)器)來(lái)發(fā)起JSONP請(qǐng)求,讓瀏覽器的同源策略保護(hù)實(shí)際調(diào)用者,流程指向過(guò)程如下:
[0049]實(shí)際調(diào)用者_(dá)>中間代理頁(yè)面進(jìn)行JSONP請(qǐng)求_>將數(shù)據(jù)給到實(shí)際調(diào)用者。
[0050]圖2流程中的A域頁(yè)面、B域頁(yè)面、C域頁(yè)面僅為一例,實(shí)施中可以應(yīng)用于三個(gè)不同域的頁(yè)面。為便于描述,將三個(gè)不同域的頁(yè)面稱為第一域頁(yè)面、第二域頁(yè)面和第三域頁(yè)面,在第一域頁(yè)面、第二域頁(yè)面和第三域頁(yè)面之間應(yīng)用本申請(qǐng)的JSONP請(qǐng)求方法,給出本申請(qǐng)JSONP請(qǐng)求方法的流程,如圖3所示,流程中可以包括:
[0051]步驟301、第一域頁(yè)面所在瀏覽器確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源;
[0052]步驟302、所述瀏覽器在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源;
[0053]步驟303、所述瀏覽器通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求;
[0054]步驟304、所述瀏覽器通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源;
[0055]步驟305、所述瀏覽器通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面。
[0056]由圖3所示流程可以得知,本申請(qǐng)實(shí)施例中,在第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源時(shí),第一域頁(yè)面所在瀏覽器在第一域頁(yè)面嵌入與第一域頁(yè)面不同源的第三域頁(yè)面,通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求,再通過(guò)第三域頁(yè)面接收第二域頁(yè)面資源并跨域傳輸?shù)诙蝽?yè)面資源至第一域頁(yè)面,使第一域頁(yè)面避免執(zhí)行第二域頁(yè)面資源可能的攻擊性腳本,保證了第一域頁(yè)面的安全性;在此過(guò)程中,JSONP請(qǐng)求的發(fā)起方仍是第一域頁(yè)面所在瀏覽器,無(wú)需單獨(dú)建立一個(gè)代理服務(wù)器去發(fā)起JSONP請(qǐng)求,不必額外占用網(wǎng)絡(luò)帶寬和耗費(fèi)網(wǎng)絡(luò)資源,節(jié)省了維護(hù)成本;并且能夠支持各種類型的瀏覽器,也不需要JSONP服務(wù)器修改M頂E-type類型。
[0057]具體實(shí)施時(shí),第三域頁(yè)面可以是靜態(tài)HTML (HyperText Mark-up Language,超文本標(biāo)記語(yǔ)言)頁(yè)面,例如流程圖2中的C域頁(yè)面可以是一個(gè)通用的靜態(tài)HTML頁(yè)面。實(shí)施例中,第三域頁(yè)面可以部署在⑶N (Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))上,這樣便于加快第一域頁(yè)面所在瀏覽器訪問(wèn)第三域頁(yè)面時(shí)的速度。例如將流程圖2中的C域頁(yè)面部署為:a.alipayobjects.com/jsonp.htmlο
[0058]實(shí)施例中,第二域頁(yè)面與第一域頁(yè)面可以同源,或者,也可以不同源。無(wú)論第二域頁(yè)面與第一域頁(yè)面是否同源,只需第三域頁(yè)面與第一域頁(yè)面不同源,即可應(yīng)用本申請(qǐng)的JSONP請(qǐng)求方法。
[0059]下需再舉一實(shí)例說(shuō)明本申請(qǐng)的JSONP請(qǐng)求方法。本例中,假設(shè)第一域頁(yè)面www.alipay.com/index, html需要通過(guò)JSONP請(qǐng)求第二域頁(yè)面www.abc.com/data中的資源,主要流程可以包括:
[0060]1、www.alipay.com/index, html 所在瀏覽器在 www.alipay.com/index, html 中嵌入第三域頁(yè)面,第三域頁(yè)面與WWW.alipay.com/index, html不同源,例如創(chuàng)建一個(gè)隱藏iframe,設(shè)詈 iframe 的地址為 a.alipayob jects.com/ jsonp.html#www.abc.com/ data ;
[0061]2、a.alipayob jects.com/jsonp.html 通過(guò)獲得 url hash,獲得需要請(qǐng)求的實(shí)際jsonp 地址 www.abc.com/data ;
[0062]3、通過(guò)跨域數(shù)據(jù)傳輸將a.alipayob jects.com/jsonp.html的獲取的數(shù)據(jù)傳給www.alipay.com/index, html。
[0063]具體實(shí)施時(shí),第三域頁(yè)面與第一域頁(yè)面間的跨域數(shù)據(jù)傳輸可以采用window, name方法,或者也可以采用postMessage方法等,window, name方法和postMessage方法僅為舉例,實(shí)施時(shí)也可以根據(jù)實(shí)際需求采用其它的跨域數(shù)據(jù)傳輸方法。
[0064]采用window, name方法來(lái)進(jìn)行跨域數(shù)據(jù)傳輸是基于:window對(duì)象有個(gè)name屬性,該屬性有個(gè)特征:即在一個(gè)窗口(window)的生命周期內(nèi),窗口載入的所有的頁(yè)面都是共享一個(gè)window, name的,每個(gè)頁(yè)面對(duì)window, name都有讀寫的權(quán)限,window, name是持久存在于一個(gè)窗口載入過(guò)的所有頁(yè)面中的,并不會(huì)因新頁(yè)面的載入而進(jìn)行重置。下面舉例說(shuō)明如何通過(guò)window, name來(lái)跨域獲取數(shù)據(jù)。
[0065]比如有一個(gè)www.example, com/a.html頁(yè)面,需要通過(guò)a.html頁(yè)面里的js來(lái)獲取另一個(gè)位于不同域上的頁(yè)面www.cnblogs.com/data, html里的數(shù)據(jù)。
[0066]data, html頁(yè)面里的代碼是給當(dāng)前的window, name設(shè)置一個(gè)a.html頁(yè)面想要得到的數(shù)據(jù)值。在a.html頁(yè)面中,可以使用一個(gè)隱藏的iframe來(lái)充當(dāng)一個(gè)中間人角色,由iframe去獲取data, html的數(shù)據(jù),然后a.html再去得到iframe獲取到的數(shù)據(jù)。
[0067]充當(dāng)中間人的iframe想要獲取到data, html的通過(guò)window, name設(shè)置的數(shù)據(jù),只需要把這個(gè)iframe的src設(shè)為www.cnblogs.com/data, html就行了。然后a.html想要得到iframe所獲取到的數(shù)據(jù),也就是想要得到iframe的window, name的值,需要把這個(gè)iframe的src設(shè)成跟a.html頁(yè)面同一個(gè)域。
[0068]采用postMessage方法進(jìn)行跨域數(shù)據(jù)傳輸時(shí),調(diào)用postMessage方法的window對(duì)象是要接收消息的那一個(gè)window對(duì)象,該方法的第一個(gè)參數(shù)message為要發(fā)送的消息,類型為字符串;第二個(gè)參數(shù)targetOrigin用來(lái)限定接收消息的那個(gè)window對(duì)象所在的域,如果不想限定域,可以使用通配符*。需要接收消息的window對(duì)象,可以通過(guò)監(jiān)聽自身的message事件來(lái)獲取傳過(guò)來(lái)的消息,消息內(nèi)容儲(chǔ)存在該事件對(duì)象的data屬性中。
[0069]基于同一發(fā)明構(gòu)思,本申請(qǐng)實(shí)施例中還提供了一種JSONP請(qǐng)求裝置,如下面的實(shí)施例所述。由于JSONP請(qǐng)求裝置解決問(wèn)題的原理與JSONP請(qǐng)求方法相似,因此JSONP請(qǐng)求裝置的實(shí)施可以參見JSONP請(qǐng)求方法的實(shí)施,重復(fù)之處不再贅述。
[0070]圖4為本申請(qǐng)實(shí)施例中JSONP請(qǐng)求裝置的示意圖,如圖4所示,本申請(qǐng)實(shí)施例中JSONP請(qǐng)求裝置可以包括:
[0071]調(diào)用確定模塊401,用于確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源;調(diào)用確定模塊401是JSONP請(qǐng)求裝置中負(fù)責(zé)確定需要進(jìn)行JSONP調(diào)用的部分,可以是軟件、硬件或二者的結(jié)合,例如可以是完成該調(diào)用確定功能的處理芯片等元器件;
[0072]頁(yè)面嵌入模塊402,用于在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源;頁(yè)面嵌入模塊402是JSONP請(qǐng)求裝置中負(fù)責(zé)嵌入頁(yè)面的部分,可以是軟件、硬件或二者的結(jié)合,例如可以是完成該頁(yè)面嵌入功能的處理芯片等元器件;
[0073]請(qǐng)求發(fā)起模塊403,用于通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求;請(qǐng)求發(fā)起模塊403是JSONP請(qǐng)求裝置中負(fù)責(zé)發(fā)起JSONP請(qǐng)求的部分,可以是軟件、硬件或二者的結(jié)合,例如可以是完成該請(qǐng)求發(fā)起功能的通信接口等;
[0074]數(shù)據(jù)接收模塊404,用于通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源;數(shù)據(jù)接收模塊404是JSONP請(qǐng)求裝置中負(fù)責(zé)接收J(rèn)SONP請(qǐng)求返回的數(shù)據(jù)資源的部分,可以是軟件、硬件或二者的結(jié)合,例如可以是完成該數(shù)據(jù)接收功能的通信接口等;
[0075]數(shù)據(jù)傳輸模塊405,用于通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面;數(shù)據(jù)傳輸模塊405是JSONP請(qǐng)求裝置中負(fù)責(zé)進(jìn)行跨域數(shù)據(jù)傳輸?shù)牟糠?,可以是軟件、硬件或二者的結(jié)合,例如可以是完成該跨域數(shù)據(jù)傳輸功能的處理芯片等元器件。
[0076]在一個(gè)實(shí)施例中,第三域頁(yè)面可以是靜態(tài)HTML頁(yè)面。
[0077]在一個(gè)實(shí)施例中,第三域頁(yè)面可以部署于⑶N上,這樣可以使第一域頁(yè)面所在瀏覽器直接訪問(wèn)第三域頁(yè)面,加快訪問(wèn)速度。
[0078]在一個(gè)實(shí)施例中,數(shù)據(jù)傳輸模塊405具體可以用于:
[0079]采用window, name方法或postMessage方法進(jìn)行跨域數(shù)據(jù)傳輸,將第二域頁(yè)面資源通過(guò)第三域頁(yè)面提供至第一域頁(yè)面。這里,window, name方法和postMessage方法僅為舉例,實(shí)施時(shí)也可以根據(jù)實(shí)際需求采用其它的跨域數(shù)據(jù)傳輸方法。
[0080]在一個(gè)實(shí)施例中,第二域頁(yè)面與第一域頁(yè)面可以同源;或,第二域頁(yè)面與第一域頁(yè)面可以不同源。
[0081]綜上所述,本申請(qǐng)實(shí)施例中,在第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源時(shí),第一域頁(yè)面所在瀏覽器在第一域頁(yè)面嵌入與第一域頁(yè)面不同源的第三域頁(yè)面,通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求,再通過(guò)第三域頁(yè)面接收第二域頁(yè)面資源并跨域傳輸?shù)诙蝽?yè)面資源至第一域頁(yè)面,使第一域頁(yè)面避免執(zhí)行第二域頁(yè)面資源可能的攻擊性腳本,保證了第一域頁(yè)面的安全性;在此過(guò)程中,JSONP請(qǐng)求的發(fā)起方仍是第一域頁(yè)面所在瀏覽器,無(wú)需單獨(dú)建立一個(gè)代理服務(wù)器去發(fā)起JSONP請(qǐng)求,不必額外占用網(wǎng)絡(luò)帶寬和耗費(fèi)網(wǎng)絡(luò)資源,節(jié)省了維護(hù)成本;并且能夠支持各種類型的瀏覽器,也不需要JSONP服務(wù)器修改M頂E-type類型。
[0082]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0083]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0084]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0085]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0086]以上所述的具體實(shí)施例,對(duì)本申請(qǐng)的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本申請(qǐng)的具體實(shí)施例而已,并不用于限定本申請(qǐng)的保護(hù)范圍,凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種JSONP請(qǐng)求方法,其特征在于,包括: 第一域頁(yè)面所在瀏覽器確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源; 所述瀏覽器在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源;所述瀏覽器通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求; 所述瀏覽器通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源; 所述瀏覽器通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面。2.如權(quán)利要求1所述的方法,其特征在于,第三域頁(yè)面為靜態(tài)超文本標(biāo)記語(yǔ)言HTML頁(yè)面。3.如權(quán)利要求1或2所述的方法,其特征在于,第三域頁(yè)面部署于內(nèi)容分發(fā)網(wǎng)絡(luò)CDN上。4.如權(quán)利要求1所述的方法,其特征在于,所述瀏覽器通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面,包括: 所述瀏覽器采用window, name方法或postMessage方法進(jìn)行跨域數(shù)據(jù)傳輸,將第二域頁(yè)面資源通過(guò)第三域頁(yè)面提供至第一域頁(yè)面。5.如權(quán)利要求1所述的方法,其特征在于,第二域頁(yè)面與第一域頁(yè)面同源;或,第二域頁(yè)面與第一域頁(yè)面不同源。6.一種JSONP請(qǐng)求裝置,其特征在于,所述裝置應(yīng)用于第一域頁(yè)面所在瀏覽器,所述裝置包括: 調(diào)用確定模塊,用于確定第一域頁(yè)面需要調(diào)用第二域頁(yè)面資源; 頁(yè)面嵌入模塊,用于在第一域頁(yè)面嵌入第三域頁(yè)面,其中,第三域頁(yè)面與第一域頁(yè)面不同源; 請(qǐng)求發(fā)起模塊,用于通過(guò)第三域頁(yè)面向第二域頁(yè)面對(duì)應(yīng)的服務(wù)器發(fā)起調(diào)用第二域頁(yè)面資源的JSONP請(qǐng)求; 數(shù)據(jù)接收模塊,用于通過(guò)第三域頁(yè)面接收所述服務(wù)器返回的第二域頁(yè)面資源; 數(shù)據(jù)傳輸模塊,用于通過(guò)第三域頁(yè)面將第二域頁(yè)面資源提供至第一域頁(yè)面。7.如權(quán)利要求6所述的裝置,其特征在于,第三域頁(yè)面為靜態(tài)HTML頁(yè)面。8.如權(quán)利要求6或7所述的裝置,其特征在于,第三域頁(yè)面部署于CDN上。9.如權(quán)利要求6所述的裝置,其特征在于,所述數(shù)據(jù)傳輸模塊具體用于: 采用window, name方法或postMessage方法進(jìn)行跨域數(shù)據(jù)傳輸,將第二域頁(yè)面資源通過(guò)第三域頁(yè)面提供至第一域頁(yè)面。10.如權(quán)利要求6所述的裝置,其特征在于,第二域頁(yè)面與第一域頁(yè)面同源;或,第二域頁(yè)面與第一域頁(yè)面不同源。
【文檔編號(hào)】H04L29/06GK105991599SQ201510087747
【公開日】2016年10月5日
【申請(qǐng)日】2015年2月26日
【發(fā)明人】魯亞然
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
安丘市| 永川市| 乐东| 长春市| 仁寿县| 眉山市| 容城县| 遵义县| 黑龙江省| 合江县| 仁化县| 朔州市| 泰兴市| 衢州市| 沂南县| 兰西县| 奎屯市| 嘉鱼县| 大同县| 林芝县| 贵阳市| 加查县| 溧水县| 临夏县| 普兰店市| 新龙县| 科技| 武清区| 肃宁县| 晋中市| 阳朔县| 临颍县| 平和县| 阿拉善盟| 静安区| 明光市| 拜泉县| 苏州市| 芒康县| 思茅市| 南城县|