js實現(xiàn)跨域訪問的三種方法
javascript跨域訪問是web開發(fā)者經常遇到的問題,什么是跨域,一個域上加載的腳本獲取或操作另一個域上的文檔屬性,下面將列出三種實現(xiàn)javascript跨域方法:
1.基于iframe實現(xiàn)跨域
基于iframe實現(xiàn)的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬于一個基礎域(例如都是xxx.com,或是xxx.com.cn),使用同一協(xié)議(例如都是 http)和同一端口(例如都是80),這樣在兩個頁面中同時添加document.domain,就可以實現(xiàn)父頁面調用子頁面的函數(shù),代碼如下:
頁面一:
<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函數(shù),實現(xiàn)js跨域訪問
2.基于script標簽實現(xiàn)跨域
script標簽本身就可以訪問其它域的資源,不受瀏覽器同源策略的限制,可以通過在頁面動態(tài)創(chuàng)建script標簽,代碼如下:
var script = document.createElement('script');
script.src = "http://aa.xx.com/js/*.js";
document.body.appendChild(script);
這樣通過動態(tài)創(chuàng)建script標簽就可以加載其它域的js文件,然后通過本頁面就可以調用加載后js文件的函數(shù),這樣做的缺陷就是不能加載其它域的文檔,只能是js文件,jsonp便是通過這種方式實現(xiàn)的,jsonp通過向其它域傳入一個callback參數(shù),通過其他域的后臺將callback參數(shù)值和json串包裝成javascript函數(shù)返回,因為是通過script標簽發(fā)出的請求,瀏覽器會將返回來的字符串按照javascript進行解析執(zhí)行,實現(xiàn)了域與域之間的數(shù)據(jù)傳輸。
jquery中對jsonp的支持也是基于此方案。
3.后臺代理方式
這種方式可以解決所有跨域問題,也就是將后臺作為代理,每次對其它域的請求轉交給本域的后臺,本域的后臺通過模擬http請求去訪問其它域,再將返回的結果返回給前臺,這樣做的好處是,無論訪問的是文檔,還是js文件都可以實現(xiàn)跨域。
以上js實現(xiàn)跨域訪問的三種方法分先給大家,大家仔細研究學習,一定會有所收獲
- 利用nginx解決cookie跨域訪問的方法
- 用jQuery與JSONP輕松解決跨域訪問的問題
- jQuery 跨域訪問問題解決方法
- Ajax實現(xiàn)跨域訪問的三種方法
- Javascript 跨域訪問解決方案
- js iframe跨域訪問(同主域/非同主域)分別深入介紹
- Ajax 設置Access-Control-Allow-Origin實現(xiàn)跨域訪問
- jquery下利用jsonp跨域訪問實現(xiàn)方法
- JQuery Ajax 跨域訪問的解決方案
- AJAX javascript的跨域訪問執(zhí)行
- 解決AJAX中跨域訪問出現(xiàn)''沒有權限''的錯誤
- Python的Django應用程序解決AJAX跨域訪問問題的方法
- AJAX的跨域訪問-兩種有效的解決方法介紹
- 深入淺析同源策略和跨域訪問
- 關于Iframe如何跨域訪問Cookie和Session的解決方法
- AJax與Jsonp跨域訪問問題小結
- jquery 跨域訪問問題解決方法(筆記)
- 淺談Ajax跨域Session和跨域訪問
- 解決nginx/apache靜態(tài)資源跨域訪問問題詳解

