怎麼更好掌握Web前端技術?JS的跨域是怎麼回事?JavaScript跨域是指經過JS在不一樣的域之間進行數據傳輸或通訊,好比用ajax向一個不一樣的域請求數據,或者經過JS獲取頁面中不一樣域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不一樣,都被看成是不一樣的域。下面來看看吧。html
在此以前,咱們首先要了解爲何須要跨域。跨域,指的是瀏覽器不能執行其餘網站的腳本。它是由瀏覽器的同源策略形成的,是瀏覽器對JavaScript施加的安全限制。簡單來講,跨域的做用就是讓你能訪問不是一個域的文件。前端
要解決跨域問題,咱們可使用如下幾種方法:面試
1、經過jsonp跨域(其實是動態建立script標籤)ajax
jsonp(json with Padding)是資料格式json的一種「使用模式」,可讓網頁從別的網域要資料。jsonp也叫填充式json,是應用json的一種新方法,只不過是被包含在函數調用中的json。jsonp由兩部分組成:回調函數和數據。回調函數是當響應到來時應該在頁面中調用的函數,而數據就是傳入回調函數中的json數據。json
2、經過document.domain+ iframe (只有在主域相同的時候才能使用該方法)跨域
兩個不一樣域的a.html和b.html瀏覽器
解決辦法:在兩個頁面都插入document.domain,這樣就能訪問iframe裏window對象的各類屬性。安全
3、使用window.name來進行跨域服務器
原理:在一個窗口(window)的生命週期內,窗口載入的全部的頁面都是共享一個window.name的,每一個頁面對window.name都有讀寫的權限框架
4、使用HTML5的window.postMessage方法來跨域傳送數據
5、利用CORS
CORS是自定義HTTP頭部,使瀏覽器和服務器對比,從而決定請求和響應是否應該進行。
IE8使用XDR對象實現CORS,和XHR相似用法
現代瀏覽器使用普通的XMLHttpRequest對象請求就行。
固然,實現JavaScript跨域的方法還有圖片Ping、利用flash等。跨域是前端最重要的面試題之一,掌握它你就比別人多了一個優點,若是你想學好Web前端開發,建議參加專業的學習方式。