国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js實現跨域訪問的三種方法

2019-11-20 11:03:14
字體:
來源:轉載
供稿:網友

javascript跨域訪問是web開發者經常遇到的問題,什么是跨域,一個域上加載的腳本獲取或操作另一個域上的文檔屬性,下面將列出三種實現javascript跨域方法:
1.基于iframe實現跨域
基于iframe實現的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬于一個基礎域(例如都是xxx.com,或是xxx.com.cn),使用同一協議(例如都是 http)和同一端口(例如都是80),這樣在兩個頁面中同時添加document.domain,就可以實現父頁面調用子頁面的函數,代碼如下:
頁面一: 

<html> <head>  <script>   document.domain = "xx.com";   function aa(){    alert("p");   }  </script> </head> <body>   <iframe src="http://localhost:8080/CmsUI/2.html" id="i">      </iframe>   <script>  document.getElementById('i').onload = function(){    var d = document.getElementById('i').contentWindow;    d.a();      };   </script>  </body> </html> 

頁面二: 

<html>  <head>  <script>   document.domain = "xx.com";   function a(){   alert("c");    }  </script>  </head>  <body>  </body> </html> 

這時候父頁面就可以調用子頁面的a函數,實現js跨域訪問
2.基于script標簽實現跨域
script標簽本身就可以訪問其它域的資源,不受瀏覽器同源策略的限制,可以通過在頁面動態創建script標簽,代碼如下:

var script = document.createElement('script'); script.src = "http://aa.xx.com/js/*.js"; document.body.appendChild(script); 

這樣通過動態創建script標簽就可以加載其它域的js文件,然后通過本頁面就可以調用加載后js文件的函數,這樣做的缺陷就是不能加載其它域的文檔,只能是js文件,jsonp便是通過這種方式實現的,jsonp通過向其它域傳入一個callback參數,通過其他域的后臺將callback參數值和json串包裝成javascript函數返回,因為是通過script標簽發出的請求,瀏覽器會將返回來的字符串按照javascript進行解析執行,實現了域與域之間的數據傳輸。
jquery中對jsonp的支持也是基于此方案。
3.后臺代理方式
這種方式可以解決所有跨域問題,也就是將后臺作為代理,每次對其它域的請求轉交給本域的后臺,本域的后臺通過模擬http請求去訪問其它域,再將返回的結果返回給前臺,這樣做的好處是,無論訪問的是文檔,還是js文件都可以實現跨域。

以上js實現跨域訪問的三種方法分先給大家,大家仔細研究學習,一定會有所收獲

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临安市| 鄯善县| 漠河县| 屯门区| 岑巩县| 永城市| 衡水市| 宁海县| 绥化市| 宁陵县| 阿合奇县| 砀山县| 西乌珠穆沁旗| 定边县| 边坝县| 扶沟县| 宁河县| 甘洛县| 肇州县| 楚雄市| 呼伦贝尔市| 尉氏县| 千阳县| 蒙自县| 交口县| 南安市| 洛宁县| 东辽县| 中阳县| 遵义县| 保山市| 留坝县| 老河口市| 武穴市| 高安市| 农安县| 抚松县| 稷山县| 西乌珠穆沁旗| 十堰市| 仪陇县|