實(shí)現(xiàn)跨域訪問(wèn)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及實(shí)現(xiàn)跨域訪問(wèn)的方法及裝置。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)技術(shù)中,直接跨域訪問(wèn)的含義就是:如果網(wǎng)頁(yè)所在的域名和要訪問(wèn)的REST (Representat1nal State Transfer,表述性狀態(tài)傳遞)接口不在同一個(gè)域名下,比如說(shuō),線上部署著一個(gè)網(wǎng)頁(yè)的域名為http://miu1.com/artist,現(xiàn)在這個(gè)域名(通過(guò)瀏覽器)要直接訪問(wèn)http://xiaom1.com/music這個(gè)REST接口中的數(shù)據(jù),由于miu1.com和xiaom1.com不在一個(gè)域名下,稱(chēng)之為跨域,在http://miu1.com/artist這個(gè)網(wǎng)頁(yè)希望通過(guò)AJAX (Asynchronous JavaScript And Extensible Markup Language,異步 Java 描述語(yǔ)言和可擴(kuò)展標(biāo)記語(yǔ)言)直接訪問(wèn)到http://xiaom1.com/music這個(gè)接口的數(shù)據(jù)時(shí),可以通過(guò)在miu1.com域名下再部署一個(gè)REST接口,即http://miu1.com/music,然后在服務(wù)器上通過(guò)這個(gè)接口調(diào)用http://xiaom1.com/music接口,將全部數(shù)據(jù)返回。
【發(fā)明內(nèi)容】
[0003]為了克服相關(guān)技術(shù)中存在的問(wèn)題,本公開(kāi)實(shí)施例提供實(shí)現(xiàn)跨域訪問(wèn)的方法及裝置。
[0004]根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種實(shí)現(xiàn)跨域訪問(wèn)的方法,用于終端,包括:
[0005]建立與瀏覽器之間的橋接;
[0006]獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù),所述REST接口數(shù)據(jù)為所述瀏覽器發(fā)送的異步Java描述語(yǔ)言和可擴(kuò)展標(biāo)記語(yǔ)言AJAX跨域訪問(wèn)請(qǐng)求所訪問(wèn)的數(shù)據(jù);
[0007]通過(guò)所述橋接將所述REST接口數(shù)據(jù)發(fā)送給所述瀏覽器。
[0008]上述方法,通過(guò)終端與瀏覽器之間建立橋接,瀏覽器向終端發(fā)送AJAX跨域訪問(wèn)的請(qǐng)求,終端獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù),REST接口數(shù)據(jù)為瀏覽器發(fā)送的AJAX跨域訪問(wèn)請(qǐng)求所訪問(wèn)的數(shù)據(jù),終端通過(guò)橋接將REST接口數(shù)據(jù)發(fā)送給瀏覽器,瀏覽器通過(guò)橋接接收終端返回的請(qǐng)求訪問(wèn)的表述性狀態(tài)傳遞REST接口的數(shù)據(jù)。因此,終端以橋接的方式與瀏覽器進(jìn)行通信,幫助瀏覽器通過(guò)AJAX的方式獲取REST接口數(shù)據(jù),從而數(shù)據(jù)不會(huì)通過(guò)服務(wù)器進(jìn)行中轉(zhuǎn),節(jié)省了服務(wù)器的帶寬流量。
[0009]在一個(gè)實(shí)施例中,所述與所述瀏覽器之間建立橋接,可包括:
[0010]接收所述瀏覽器發(fā)送的橋接請(qǐng)求;
[0011]根據(jù)所述橋接請(qǐng)求,與所述瀏覽器之間建立橋接。
[0012]通過(guò)橋接的方式,終端與瀏覽器之間建立連接,便于終端從瀏覽器側(cè)攔截AJAX跨域訪問(wèn)請(qǐng)求,以及為后續(xù)返回獲取到的REST接口數(shù)據(jù)提供了通信通道。
[0013]在一個(gè)實(shí)施例中,所述終端上配置有混合模式移動(dòng)應(yīng)用;
[0014]所述接收所述瀏覽器發(fā)送的橋接請(qǐng)求,根據(jù)所述橋接請(qǐng)求,與所述瀏覽器之間建立橋接,包括:
[0015]所述混合模式移動(dòng)應(yīng)用接收瀏覽器中預(yù)設(shè)的Java描述語(yǔ)言JavaScript橋接函數(shù)發(fā)起的傳輸控制協(xié)議TCP連接請(qǐng)求;
[0016]經(jīng)過(guò)與所述JavaScript橋接函數(shù)進(jìn)行TCP連接的握手之后,在所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間建立TCP連接,并向所述瀏覽器返回橋接成功響應(yīng);
[0017]所述通過(guò)所述橋接將所述REST接口數(shù)據(jù)發(fā)送給所述瀏覽器,包括:所述混合模式移動(dòng)應(yīng)用通過(guò)所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間的橋接,將所述REST接口數(shù)據(jù)發(fā)送給所述瀏覽器。
[0018]利用安裝于終端的混合模式移動(dòng)應(yīng)用來(lái)實(shí)現(xiàn)中轉(zhuǎn)AJAX跨域訪問(wèn)請(qǐng)求以及獲取REST接口數(shù)據(jù),由于混合模式移動(dòng)應(yīng)用同時(shí)兼具native app和web app的優(yōu)勢(shì),使得終端同時(shí)具備了中轉(zhuǎn)AJAX跨域訪問(wèn)請(qǐng)求以及獲取REST接口數(shù)據(jù)的功能,實(shí)施簡(jiǎn)單,對(duì)終端改動(dòng)小。
[0019]經(jīng)過(guò)與所述JavaScript橋接函數(shù)進(jìn)行TCP連接的握手之后,在所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間建立TCP連接的方式,由于TCP傳輸協(xié)議是面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,也使得REST接口數(shù)據(jù)的傳輸更可靠。
[0020]在一個(gè)實(shí)施例中,所述方法還可包括:
[0021]所述獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù)之前,利用所述與瀏覽器之間的橋接,攔截所述瀏覽器發(fā)送的AJAX跨域訪問(wèn)請(qǐng)求。
[0022]利用已建立的與瀏覽器之間的橋接,使得AJAX跨域訪問(wèn)請(qǐng)求能夠被準(zhǔn)確的攔截。
[0023]在一個(gè)實(shí)施例中,所述獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù),可包括:
[0024]根據(jù)獲取的所述AJAX跨域訪問(wèn)請(qǐng)求,從服務(wù)器獲取所述AJAX跨域訪問(wèn)請(qǐng)求所訪問(wèn)的REST接口數(shù)據(jù)。
[0025]根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種實(shí)現(xiàn)跨域訪問(wèn)的方法,用于瀏覽器,包括:
[0026]與終端之間建立橋接;
[0027]向所述終端發(fā)送異步Java描述語(yǔ)言和可擴(kuò)展標(biāo)記語(yǔ)言AJAX跨域訪問(wèn)的請(qǐng)求;
[0028]通過(guò)所述橋接接收所述終端返回的所述請(qǐng)求訪問(wèn)的表述性狀態(tài)傳遞REST接口的數(shù)據(jù)。
[0029]上述方法,通過(guò)終端與瀏覽器之間建立橋接,瀏覽器向終端發(fā)送AJAX跨域訪問(wèn)的請(qǐng)求,終端獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù),REST接口數(shù)據(jù)為瀏覽器發(fā)送的AJAX跨域訪問(wèn)請(qǐng)求所訪問(wèn)的數(shù)據(jù),終端通過(guò)橋接將REST接口數(shù)據(jù)發(fā)送給瀏覽器,瀏覽器通過(guò)橋接接收終端返回的請(qǐng)求訪問(wèn)的表述性狀態(tài)傳遞REST接口的數(shù)據(jù)。因此,終端以橋接的方式與瀏覽器進(jìn)行通信,幫助瀏覽器通過(guò)AJAX的方式獲取REST接口數(shù)據(jù),從而數(shù)據(jù)不會(huì)通過(guò)服務(wù)器進(jìn)行中轉(zhuǎn),節(jié)省了服務(wù)器的帶寬流量。
[0030]在一個(gè)實(shí)施例中,所述與終端之間建立橋接,可包括:
[0031]向終端發(fā)送橋接請(qǐng)求;
[0032]根據(jù)所述橋接請(qǐng)求,與所述瀏覽器之間建立橋接;
[0033]接收終端返回的橋接成功消息。
[0034]通過(guò)橋接的方式,終端與瀏覽器之間建立連接,便于終端從瀏覽器側(cè)攔截AJAX跨域訪問(wèn)請(qǐng)求,以及為后續(xù)返回獲取到的REST接口數(shù)據(jù)提供了通信通道。
[0035]在一個(gè)實(shí)施例中,向終端發(fā)送橋接請(qǐng)求;根據(jù)所述橋接請(qǐng)求,與所述瀏覽器之間建立橋接,可包括:
[0036]通過(guò)預(yù)設(shè)的Java描述語(yǔ)言JavaScript橋接函數(shù),向安裝于所述終端上的混合模式移動(dòng)應(yīng)用發(fā)送傳輸控制協(xié)議TCP連接請(qǐng)求,經(jīng)過(guò)與所述JavaScript橋接函數(shù)進(jìn)行TCP連接的握手之后,在所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間建立TCP連接。
[0037]利用安裝于終端的混合模式移動(dòng)應(yīng)用來(lái)實(shí)現(xiàn)中轉(zhuǎn)AJAX跨域訪問(wèn)請(qǐng)求以及獲取REST接口數(shù)據(jù),由于混合模式移動(dòng)應(yīng)用同時(shí)兼具Native App和Web App的優(yōu)勢(shì),使得終端同時(shí)具備了中轉(zhuǎn)AJAX跨域訪問(wèn)請(qǐng)求以及獲取REST接口數(shù)據(jù)的功能,實(shí)施簡(jiǎn)單,對(duì)終端改動(dòng)小。
[0038]經(jīng)過(guò)與所述JavaScript橋接函數(shù)進(jìn)行TCP連接的握手之后,在所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間建立TCP連接的方式,由于TCP傳輸協(xié)議是面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,也使得REST接口數(shù)據(jù)的傳輸更可靠。
[0039]根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種實(shí)現(xiàn)跨域訪問(wèn)的裝置,位于終端中,所述裝置包括:
[0040]橋接建立模塊,用于與瀏覽器之間建立橋接;
[0041 ] 獲取模塊,用于獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù),所述REST接口數(shù)據(jù)為所述瀏覽器發(fā)送的異步Java描述語(yǔ)言JavaScript和可擴(kuò)展標(biāo)記語(yǔ)言AJAX跨域訪問(wèn)請(qǐng)求所訪問(wèn)的數(shù)據(jù);
[0042]發(fā)送模塊,用于通過(guò)所述橋接將所述獲取模塊獲取到的所述REST接口數(shù)據(jù)發(fā)送給所述瀏覽器。
[0043]在一個(gè)實(shí)施例中,所述橋接建立模塊,可包括:
[0044]接收子模塊,用于接收所述瀏覽器發(fā)送的橋接請(qǐng)求;
[0045]建立子模塊,用于根據(jù)所述接收子模塊接收的所述橋接請(qǐng)求,與所述瀏覽器之間建立橋接。
[0046]在一個(gè)實(shí)施例中,所述終端上配置有混合模式移動(dòng)應(yīng)用;
[0047]所述接收子模塊,用于通過(guò)混合模式移動(dòng)應(yīng)用接收瀏覽器中預(yù)設(shè)的JavaScript橋接函數(shù)發(fā)起的傳輸控制協(xié)議TCP連接請(qǐng)求;
[0048]所述建立子模塊,用于經(jīng)過(guò)與所述JavaScript橋接函數(shù)進(jìn)行TCP連接的握手之后,在所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間建立TCP連接,并向所述瀏覽器返回橋接成功響應(yīng);
[0049]所述發(fā)送模塊,用于通過(guò)所述混合模式移動(dòng)應(yīng)用使用所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間的橋接,將所述REST接口數(shù)據(jù)發(fā)送給所述瀏覽器。
[0050]在一個(gè)實(shí)施例中,還可包括:
[0051]攔截模塊,用于在獲取模塊獲取表述性狀態(tài)傳遞REST接口數(shù)據(jù)之前,利用所述與瀏覽器之間的橋接,攔截所述瀏覽器發(fā)送的AJAX跨域訪問(wèn)請(qǐng)求。
[0052]根據(jù)本公開(kāi)實(shí)施例的第四方面,提供一種實(shí)現(xiàn)跨域訪問(wèn)的裝置,位于瀏覽器中,所述裝置包括:
[0053]橋接建立模塊,用于與終端之間建立橋接;
[0054]發(fā)送模塊,用于向終端發(fā)送通過(guò)異步Java描述語(yǔ)言和可擴(kuò)展標(biāo)記語(yǔ)言AJAX進(jìn)行跨域訪問(wèn)的請(qǐng)求;
[0055]接收模塊,用于通過(guò)所述橋接接收所述終端返回的所述請(qǐng)求訪問(wèn)的表述性狀態(tài)傳遞REST接口的數(shù)據(jù)。
[0056]在一個(gè)實(shí)施例中,所述橋接建立模塊,可包括:
[0057]發(fā)送子模塊,用于向終端發(fā)送橋接請(qǐng)求;
[0058]建立子模塊,用于根據(jù)所述橋接請(qǐng)求,與所述瀏覽器之間建立橋接;
[0059]接收子模塊,用于接收終端返回的橋接成功消息。
[0060]在一個(gè)實(shí)施例中,所述發(fā)送子模塊,用于通過(guò)預(yù)設(shè)的Java描述語(yǔ)言JavaScript橋接函數(shù),向安裝于所述終端上的混合模式移動(dòng)應(yīng)用發(fā)送傳輸控制協(xié)議TCP連接請(qǐng)求;
[0061]建立子模塊,用于經(jīng)過(guò)與所述JavaScript橋接函數(shù)進(jìn)行TCP連接的握手之后,在所述混合模式移動(dòng)應(yīng)用與所述瀏覽器之間建立TCP連接。
[0062]根據(jù)本公開(kāi)實(shí)施例的第五方面,提供一種實(shí)現(xiàn)跨域訪問(wèn)的裝置,用于終端,所述裝置包括:
[0063]處理器;
[0064]用于存儲(chǔ)處理器可執(zhí)行指令的存儲(chǔ)器;
[0065]其中,所述處理器被配置為:
[0066]建立與瀏