1.JSONP(JSON with Padding)
可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問(wèn)的問(wèn)題。
由于Web 頁(yè)面上調(diào)用 js 文件不受瀏覽器同源策略的影響,所以可以通過(guò) Script 便簽可以進(jìn)行跨域的請(qǐng)求。
2.CORS (Cross-Origin Resource Sharing)
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)頭即可。(使用時(shí)IE瀏覽器不能低于IE10。)
CORS與JSONP的使用目的相同,但是比JSONP更強(qiáng)大。
JSONP只支持GET請(qǐng)求,CORS支持所有類(lèi)型的HTTP請(qǐng)求。JSONP的優(yōu)勢(shì)在于支持老式瀏覽器,以及可以向不支持CORS的網(wǎng)站請(qǐng)求數(shù)據(jù)。
3.降域
通過(guò)雙向設(shè)置 document.domain 的值,解決主域名下的跨域問(wèn)題。(document.domain:獲取/設(shè)置當(dāng)前文檔的原始域部分, 用于同源策略。)
有兩個(gè)二級(jí)域名:a.jirengu.com 和 b.jirengu.com,可通過(guò)設(shè)定 document.domain 的值為主域名:jirengu.com 的方式,突破瀏覽器的同源策略限制,來(lái)獲取對(duì)方的元素
a —— document.domain ='jirengu.com'
b —— document.domain ='jirengu.com'
降域具有很大的局限性,適用范圍較小,適合在同一主域名下使用
4.postmessage
HTML5中新增postMessage方法,可以實(shí)現(xiàn)跨文檔消息傳輸。該方法可以通過(guò)綁定window的message事件來(lái)監(jiān)聽(tīng)發(fā)送跨文檔消息傳輸內(nèi)容。
a頁(yè)面
b頁(yè)面