您好,登錄后才能下訂單哦!
如何去解決JS跨域問題?怎么能學(xué)好Web前端開發(fā)?JavaScript跨域是指通過JS在不同的域之間進(jìn)行數(shù)據(jù)傳輸或通信,比如用ajax向一個(gè)不同的域請求數(shù)據(jù),或者通過JS獲取頁面中不同域的框架中(iframe)的數(shù)據(jù)。只要協(xié)議、域名、端口有任何一個(gè)不同,都被當(dāng)作是不同的域。那么如何解決跨域問題呢?下面來看看吧。
在此之前,我們首先要了解為什么需要跨域。跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。簡單來說,跨域的作用就是讓你能訪問不是一個(gè)域的文件。
要解決跨域問題,我們可以使用以下幾種方法:
一、通過jsonp跨域(實(shí)際上是動態(tài)創(chuàng)建script標(biāo)簽)
jsonp(json with Padding)是資料格式j(luò)son的一種“使用模式”,可以讓網(wǎng)頁從別的網(wǎng)域要資料。jsonp也叫填充式j(luò)son,是應(yīng)用json的一種新方法,只不過是被包含在函數(shù)調(diào)用中的json。jsonp由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)?;卣{(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面中調(diào)用的函數(shù),而數(shù)據(jù)就是傳入回調(diào)函數(shù)中的json數(shù)據(jù)。
二、通過document.domain+ iframe (只有在主域相同的時(shí)候才能使用該方法)
兩個(gè)不同域的a.html和b.html
解決辦法:在兩個(gè)頁面都插入document.domain,這樣就能訪問iframe里window對象的各種屬性。
三、使用window.name來進(jìn)行跨域
原理:在一個(gè)窗口(window)的生命周期內(nèi),窗口載入的所有的頁面都是共享一個(gè)window.name的,每個(gè)頁面對window.name都有讀寫的權(quán)限
四、使用HTML5的window.postMessage方法來跨域傳送數(shù)據(jù)
五、利用CORS
CORS是自定義HTTP頭部,使瀏覽器和服務(wù)器對比,從而決定請求和響應(yīng)是否應(yīng)該進(jìn)行。
IE8使用XDR對象實(shí)現(xiàn)CORS,和XHR類似用法
現(xiàn)代瀏覽器使用普通的XMLHttpRequest對象請求就行。
當(dāng)然,實(shí)現(xiàn)JavaScript跨域的方法還有圖片Ping、利用flash等??缬蚴乔岸俗钪匾拿嬖囶}之一,掌握它你就比別人多了一個(gè)優(yōu)勢,如果你想學(xué)好Web前端開發(fā),建議參加專業(yè)的學(xué)習(xí)方式。
這里推薦一下我的前端學(xué)習(xí)交流扣qun:784783012 ,里面都是學(xué)習(xí)前端的,從最基礎(chǔ)的HTML+CSS+JS【炫酷特效,游戲,插件封裝,設(shè)計(jì)模式】到移動端HTML5的項(xiàng)目實(shí)戰(zhàn)的學(xué)習(xí)資料都有整理,送給每一位前端小伙伴。2019最新技術(shù),從企業(yè)招聘人才需求 到怎么學(xué)習(xí)前端開發(fā),和學(xué)習(xí)什么內(nèi)容都有免費(fèi)系統(tǒng)分享。好友都在里面學(xué)習(xí)交流,每天都會有大牛定時(shí)講解前端技術(shù)!
點(diǎn)擊: 加入
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。