摘要:可能平時(shí)最常用到的就是方式的跨域,可以用提供的。接口鏈接回調(diào)原頁(yè)面上函數(shù)處理返回結(jié)果讓結(jié)果跳轉(zhuǎn)到域跨域原理定義一種跨域訪問(wèn)的機(jī)制,可以讓實(shí)現(xiàn)跨域訪問(wèn)。允許一個(gè)域上的網(wǎng)絡(luò)應(yīng)用向另一個(gè)域提交跨域請(qǐng)求。
1、可能平時(shí)最常用到的就是get方式的jsonp跨域,可以用jquery提供的$.ajax 、$.getJSON。
$.ajax({ url:"接口地址", type:"GET", data:"想給接口傳的數(shù)據(jù)", dataType:"jsonp", success:function(ret){ console.log(ret); } });
這樣很簡(jiǎn)單的就可以實(shí)現(xiàn)jsonp的跨域,獲取接口返回值。
想更多的了解$.ajax可以參考下面的鏈接,里面有很詳細(xì)的介紹:鏈接描述
2、post方式的form表單跨域。
a.com html:
a.com callback.php:3、CORS跨域
原理:CORS定義一種跨域訪問(wèn)的機(jī)制,可以讓AJAX實(shí)現(xiàn)跨域訪問(wèn)。CORS 允許一個(gè)域上的網(wǎng)絡(luò)應(yīng)用向另一個(gè)域提交跨域 AJAX 請(qǐng)求。實(shí)現(xiàn)此功能非常簡(jiǎn)單,只需由服務(wù)器發(fā)送一個(gè)響應(yīng)標(biāo)頭即可。
注:移動(dòng)終端上,除了opera Mini都支持。
利用 CORS,http://www.b.com 只需添加一個(gè)標(biāo)頭,就可以允許來(lái)自 http://www.a.com 的請(qǐng)求,下圖是我在PHP中的 hander() 設(shè)置,“*”號(hào)表示允許任何域向我們的服務(wù)端提交請(qǐng)求:
header("Access-Control-Allow-Origin:*");也可以設(shè)置指定域名:
header("Access-Control-Allow-Origin:http://www.b.com");js部分:
$.ajax({ url: a_cross_domain_url, crossDomain: true, method: "POST" });CORS比較適合應(yīng)用在傳送信息量較大以及移動(dòng)端來(lái)使用。
4、script標(biāo)簽來(lái)跨域
js.onload = js.onreadystatechange = function() { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { // callback在此處執(zhí)行 js.onload = js.onreadystatechange = null; } };5、h5的postMessage
otherWindow.postMessage(message, targetOrigin); otherWindow: 對(duì)接收信息頁(yè)面的window的引用。可以是頁(yè)面中iframe的contentWindow屬性;window.open的返回值;通過(guò)name或下標(biāo)從window.frames取到的值。 message: 所要發(fā)送的數(shù)據(jù),string類型。 targetOrigin: 用于限制otherWindow,“*”表示不作限制 a.com/index.html中的代碼: b.com/index.html中的代碼:6、子域跨域(document.domain+iframe)
www.a.com上的a.html document.domain = "a.com"; var ifr = document.createElement("iframe"); ifr.src = "http://script.a.com/b.html"; ifr.style.display = "none"; document.body.appendChild(ifr); ifr.onload = function(){ var doc = ifr.contentDocument || ifr.contentWindow.document; // 在這里操縱b.html alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue); }; script.a.com上的b.html document.domain = "a.com";具體的做法是可以在http://www.a.com/a.html和http://script.a.com/b.html兩個(gè)文件中分別加上document.domain = "a.com";然后通過(guò)a.html文件中創(chuàng)建一個(gè)iframe,去控制iframe的contentDocument,這樣兩個(gè)js文件之間就可以“交互”了。當(dāng)然這種辦法只能解決主域相同而二級(jí)域名不同的情況。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/78293.html
摘要:比如域的頁(yè)面通過(guò)嵌入了一個(gè)域的頁(yè)面,可以通過(guò)以下方法實(shí)現(xiàn)和的通信通過(guò)跨域以上幾種都是雙向通信的,即兩個(gè),頁(yè)面與或是頁(yè)面與頁(yè)面之間的,下面說(shuō)幾種單項(xiàng)跨域的一般用來(lái)獲取數(shù)據(jù),因?yàn)橥ㄟ^(guò)標(biāo)簽引入的是不受同源策略的限制的。 跨域整理@(前端筆記) 跨域 只要協(xié)議、域名、端口有任何一個(gè)不同,都被當(dāng)作是不同的域。由于瀏覽器的同源策略,其限制之一是不能通過(guò)ajax的方法情趣請(qǐng)求不同源的文檔。第二個(gè)限制...
摘要:通過(guò)跨域通過(guò)引入的不受同源策略的限制,所以我們可以通過(guò)標(biāo)簽引入一個(gè)或者是一個(gè)其他后綴形式如,等的文件,此文件返回一個(gè)函數(shù)的調(diào)用。 1.跨域的定義 只要協(xié)議、域名、端口有任何一個(gè)不同,就會(huì)被當(dāng)做為不同的域,如果從A域名訪問(wèn)B域名上的資源就叫做跨域。 下面我們來(lái)看下幾種跨域的方法: 2.document.domain 瀏覽器的同源策略有一些限制,第一,不能通過(guò)ajax方法去請(qǐng)求不同源的資源...
摘要:通過(guò)跨域通過(guò)引入的不受同源策略的限制,所以我們可以通過(guò)標(biāo)簽引入一個(gè)或者是一個(gè)其他后綴形式如,等的文件,此文件返回一個(gè)函數(shù)的調(diào)用。 1.跨域的定義 只要協(xié)議、域名、端口有任何一個(gè)不同,就會(huì)被當(dāng)做為不同的域,如果從A域名訪問(wèn)B域名上的資源就叫做跨域。 下面我們來(lái)看下幾種跨域的方法: 2.document.domain 瀏覽器的同源策略有一些限制,第一,不能通過(guò)ajax方法去請(qǐng)求不同源的資源...
摘要:通過(guò)跨域通過(guò)引入的不受同源策略的限制,所以我們可以通過(guò)標(biāo)簽引入一個(gè)或者是一個(gè)其他后綴形式如,等的文件,此文件返回一個(gè)函數(shù)的調(diào)用。 1.跨域的定義 只要協(xié)議、域名、端口有任何一個(gè)不同,就會(huì)被當(dāng)做為不同的域,如果從A域名訪問(wèn)B域名上的資源就叫做跨域。 下面我們來(lái)看下幾種跨域的方法: 2.document.domain 瀏覽器的同源策略有一些限制,第一,不能通過(guò)ajax方法去請(qǐng)求不同源的資源...
摘要:中的跨域請(qǐng)求應(yīng)該也算是一個(gè)重點(diǎn),具體什么叫跨域,在這里我就不展開(kāi)了,可以查一下瀏覽器的同源策略和跨域的定義。再看后臺(tái)文件文件接收回調(diào)函數(shù)并把要返回的參數(shù)以參數(shù)注入的方式注入到回調(diào)函數(shù)中,再返回給客戶端。 js中的跨域請(qǐng)求應(yīng)該也算是一個(gè)重點(diǎn),具體什么叫跨域,在這里我就不展開(kāi)了,可以查一下瀏覽器的同源策略和跨域的定義。原來(lái)只知道常用的jsonp和document.domain這兩種方式,這...
閱讀 3220·2023-04-25 18:22
閱讀 2510·2021-11-17 09:33
閱讀 3625·2021-10-11 10:59
閱讀 3306·2021-09-22 15:50
閱讀 2942·2021-09-10 10:50
閱讀 923·2019-08-30 15:53
閱讀 509·2019-08-29 11:21
閱讀 3048·2019-08-26 13:58