跨域的實現及解決
阿新 • • 發佈:2021-06-24
所謂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.com
和https://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,就可以實現父頁面呼叫子頁面的函式