跨域的解決方式

1.JSONP(JSON with Padding)
可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問的問題。
由于Web 頁面上調(diào)用 js 文件不受瀏覽器同源策略的影響,所以可以通過 Script 便簽可以進(jìn)行跨域的請(qǐng)求。

QQ截圖20170911002052.png
QQ截圖20170911002116.png

2.CORS (Cross-Origin Resource Sharing)
CORS定義一種跨域訪問的機(jī)制,可以讓AJAX實(shí)現(xiàn)跨域訪問。CORS 允許一個(gè)域上的網(wǎng)絡(luò)應(yīng)用向另一個(gè)域提交跨域 AJAX 請(qǐng)求。實(shí)現(xiàn)此功能非常簡單,只需由服務(wù)器發(fā)送一個(gè)響應(yīng)標(biāo)頭即可。(使用時(shí)IE瀏覽器不能低于IE10。)

Paste_Image.png

CORS與JSONP的使用目的相同,但是比JSONP更強(qiáng)大。
JSONP只支持GET請(qǐng)求,CORS支持所有類型的HTTP請(qǐng)求。JSONP的優(yōu)勢在于支持老式瀏覽器,以及可以向不支持CORS的網(wǎng)站請(qǐng)求數(shù)據(jù)。

3.降域
通過雙向設(shè)置 document.domain 的值,解決主域名下的跨域問題。(document.domain:獲取/設(shè)置當(dāng)前文檔的原始域部分, 用于同源策略。)

有兩個(gè)二級(jí)域名:a.jirengu.com 和 b.jirengu.com,可通過設(shè)定 document.domain 的值為主域名:jirengu.com 的方式,突破瀏覽器的同源策略限制,來獲取對(duì)方的元素
a —— document.domain ='jirengu.com'
b —— document.domain ='jirengu.com'

降域具有很大的局限性,適用范圍較小,適合在同一主域名下使用

4.postmessage
HTML5中新增postMessage方法,可以實(shí)現(xiàn)跨文檔消息傳輸。該方法可以通過綁定window的message事件來監(jiān)聽發(fā)送跨文檔消息傳輸內(nèi)容。

a頁面


QQ截圖20170911011238.png

b頁面

QQ截圖20170911011343.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容