js跨域的幾種方式


    js跨域是指通過js在不同的域之間進行數據傳輸或通信,只要協議、域名、端口有任何一個不同,都被當作是不同的域。 

     舉例:  協議: http/https      域名:主機名      端口 :8080

     

1.通過jsonp跨域

    jsonp是說json格式數據使用的一種方式。

    原理是:動態插入script標簽,通過script標簽引入一個js文件,這個js文件載入成功后會執行我們在url參數中指定的函數,並且會把我們需要的json數據作為參數傳入。jsonp是需要服務器端的頁面進行相應的配合的。

 

   由於同源策略的限制,XmlHttpRequest只允許請求當前源(域名、協議、端口)的資源,為了實現跨域請求,可以通過script標簽實現跨域請求,然后在服務端輸出JSON數據並執行回調函數,從而解決了跨域的數據請求。

優點是兼容性好,簡單易用,支持瀏覽器與服務器雙向通信。缺點是只支持GET請求。

jQuery 中 $.getJSON方法會自動判斷是否跨域,不跨域的話,就調用普通的ajax方法;跨域的話,則會以異步加載js文件的形式來調用jsonp的回調函數。

  

2.document.domain進行跨域

   將子域和主域的document.domain設為同一個主域.這里說的主域和子域說的是不同的頁面。

  前提條件:這兩個域名必須屬於同一個基礎域名!而且所用的協議,端口都要一致,否則無法利用document.domain進行跨域

3.window.name進行跨域

     window.name是持久存在一個窗口載入過的所有頁面中的,並不會因新頁面的載入而進行重置。

4.HTML5的window.postMessage方法來跨域傳送數據

 無論這個window對象是屬於同源或不同源,可以使用它來向其它的window對象發送消息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM