国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript跨域的方法匯總

2019-11-20 11:25:20
字體:
供稿:網(wǎng)友

此文章學(xué)習(xí)借鑒了一些其他前端同學(xué)的文章,自己做了個(gè)實(shí)踐總結(jié)

以下的例子包含的文件均為為 http://www.a.com/a.htmlhttp://www.a.com/c.htmlhttp://www.b.com/b.html,要做的都是從a.html獲取b.html里的數(shù)據(jù)

1.JSONP

jsonp是利用script標(biāo)簽沒有跨域限制的特性,通過在src的url的參數(shù)上附加回調(diào)函數(shù)名字,然后服務(wù)器接收回調(diào)函數(shù)名字并返回一個(gè)包含數(shù)據(jù)的回調(diào)函數(shù)

  function doSomething(data) {    // 對(duì)data處理  }  var script = document.createElement("script");  script.src = "http://www.b.com/b.html?callback=doSomething";  document.body.appendChild(script);  // 1.生成一個(gè)script標(biāo)簽,將其append在body上,向服務(wù)器發(fā)出請(qǐng)求  // 2.服務(wù)器根據(jù) callback 這個(gè)參數(shù)生成一個(gè)包含數(shù)據(jù)的函數(shù) doSomething({"a", "1"})  // 3.頁面事先已聲明doSomething函數(shù),此時(shí)執(zhí)行 doSomething(data) 這個(gè)函數(shù),獲得數(shù)據(jù)

2.HTML5的postMessage

假設(shè)在a.html里嵌套個(gè)<iframe src="

a.html

b.html

這樣打開a頁面就先彈出 a data,再彈出 b data

3.window.name + iframe

window.name的原理是利用同一個(gè)窗口在不同的頁面共用一個(gè)window.name,這個(gè)需要在a.com下建立一個(gè)代理文件c.html,使同源后a.html能獲取c.html的window.name

a.html

b.html

4.window.location.hash + iframe

b.html將數(shù)據(jù)以hash值的方式附加到c.html的url上,在c.html頁面通過location.hash獲取數(shù)據(jù)后傳到a.html(這個(gè)例子是傳到a.html的hash上,當(dāng)然也可以傳到其他地方)

a.html

b.html

c.html

5.CORS

CORS是XMLHttpRequest Level 2 里規(guī)定的一種跨域方式。在支持這個(gè)方式的瀏覽器里,javascript的寫法和不跨域的ajax寫法一模一樣,只要服務(wù)器需要設(shè)置Access-Control-Allow-Origin: *

6.document.domain

這種方式適用于主域相同,子域不同,比如http://www.a.comhttp://b.a.com
假如這兩個(gè)域名下各有a.html 和b.html,

a.html

  document.domain = "a.com";  var iframe = document.createElement("iframe");  iframe.src = "http://b.a.com/b.html";  document.body.appendChild(iframe);  iframe.onload = function() {    console.log(iframe.contentWindow....); // 在這里操作b.html里的元素?cái)?shù)據(jù)  }

b.html

  document.domain = "a.com";

注意:document.domain需要設(shè)置成自身或更高一級(jí)的父域,且主域必須相同。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 莱芜市| 当雄县| 海宁市| 正宁县| 黑水县| 农安县| 灵宝市| 囊谦县| 嵊州市| 通州市| 浙江省| 海宁市| 马公市| 三穗县| 凌云县| 招远市| 澎湖县| 鹤山市| 精河县| 进贤县| 勐海县| 宣武区| 繁昌县| 应城市| 新乡市| 色达县| 和田市| 中卫市| 南郑县| 郸城县| 湖州市| 温泉县| 清流县| 长汀县| 呈贡县| 广德县| 全州县| 弥勒县| 大邑县| 营山县| 乐安县|