|
javascript跨域訪問是web開發(fā)者經常遇到的問題,什么是跨域,一個域上加載的腳本獲取或操作另一個域上的文檔屬性,下面將列出三種實現javascript跨域方法:
1.基于iframe實現跨域 基于iframe實現的跨域要求兩個域具有aa.,bb.這種特點,也就是兩個頁面必須屬于一個基礎域(例如都是x,或是x.cn),使用同一協議(例如都是 http)和同一端口(例如都是80),這樣在兩個頁面中同時添加document.domain,就可以實現父頁面調用子頁面的函數,代碼如下: 頁面一: Html代碼
頁面二: Html代碼
這時候父頁面就可以調用子頁面的a函數,實現js跨域訪問 2.基于script標簽實現跨域 script標簽本身就可以訪問其它域的資源,不受瀏覽器同源策略的限制,可以通過在頁面動態(tài)創(chuàng)建script標簽,代碼如下: Java代碼
這樣通過動態(tài)創(chuàng)建script標簽就可以加載其它域的js文件,然后通過本頁面就可以調用加載后js文件的函數,這樣做的缺陷就是不能加載其它域的文檔,只能是js文件,jsonp便是通過這種方式實現的,jsonp通過向其它域傳入一個callback參數,通過其他域的后臺將callback參數值和json串包裝成javascript函數返回,因為是通過script標簽發(fā)出的請求,瀏覽器會將返回來的字符串按照javascript進行解析執(zhí)行,實現了域與域之間的數據傳輸。 jquery中對jsonp的支持也是基于此方案。 3.后臺代理方式 這種方式可以解決所有跨域問題,也就是將后臺作為代理,每次對其它域的請求轉交給本域的后臺,本域的后臺通過模擬http請求去訪問其它域,再將返回的結果返回給前臺,這樣做的好處是,無論訪問的是文檔,還是js文件都可以實現跨域。 |
|
|