1. 程式人生 > 其它 >跨域的實現及解決

跨域的實現及解決

所謂js跨域問題,是指在一個域下的頁面中通過js訪問另一個不同域下 的資料物件,出於安全性考 慮,幾乎所有瀏覽器都不允許這種跨域訪問

javascript跨域有兩種情況:

  • 1、基於同一父域的子域之間,如:a.c.com和b.c.com
  • 2、基於不同的父域之間,如:www.a.com和www.b.com
  • 3、埠的不同,如:www.a.com:8080和www.a.com:8088
  • 4、協議不同,如:http://www.a.comhttps://www.a.com

方法一:jsonp函式

這樣通過動態建立script標籤載入其它域的js檔案,然後通過本頁面呼叫載入後js檔案的函式,這樣做的缺陷是不能載入其它域的文件,只能是js檔案,jsonp便是通過這種方式實現的,jsonp通過向其它域傳入一個callback引數,通過其他域的後臺將callback引數值和json串包裝成javascript函式返回,因為是通過script標籤發出的請求,瀏覽器會將返回來的字串按照javascript進行解析執行,實現域與域的資料傳輸。

方法二:iframe實現跨域
基於iframe實現的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬於同一個頂級基礎域(例如都是xxx.com,或是xxx.com.cn),使用同一協議(例如都是 http)和同一埠(例如都是80),這樣在兩個頁面中同時新增document.domain,就可以實現父頁面呼叫子頁面的函式