js跨域是指經過js在不一樣的域之間進行數據傳輸或通訊,只要協議、域名、端口有任何一個不一樣,都被看成是不一樣的域。 ajax
舉例: 協議: http/https 域名:主機名 端口 :8080json
1.經過jsonp跨域跨域
jsonp是說json格式數據使用的一種方式。瀏覽器
原理是:動態插入script
標籤,經過script
標籤引入一個js
文件,這個js文件載入成功後會執行咱們在url參數中指定的函數,而且會把咱們須要的json
數據做爲參數傳入。jsonp是須要服務器端的頁面進行相應的配合的。服務器
因爲同源策略的限制,XmlHttpRequest
只容許請求當前源(域名、協議、端口)的資源,爲了實現跨域請求,能夠經過script
標籤實現跨域請求,而後在服務端輸出JSON數據並執行回調函數,從而解決了跨域的數據請求。dom
優勢是兼容性好,簡單易用,支持瀏覽器與服務器雙向通訊。缺點是隻支持GET請求。異步
jQuery 中 $.getJSON方法會自動判斷是否跨域,不跨域的話,就調用普通的ajax方法;跨域的話,則會以異步加載js文件的形式來調用jsonp的回調函數。函數
2.document.domain進行跨域post
將子域和主域的document.domain
設爲同一個主域.這裏說的主域和子域說的是不一樣的頁面。jsonp
前提條件:這兩個域名必須屬於同一個基礎域名!並且所用的協議,端口都要一致,不然沒法利用document.domain
進行跨域
3.window.name進行跨域
window.name是持久存在一個窗口載入過的全部頁面中的,並不會因新頁面的載入而進行重置。
4.HTML5的window.postMessage
方法來跨域傳送數據
不管這個window對象是屬於同源或不一樣源,可使用它來向其它的window對象發送消息。