Web页面的跨域问题产生原因是企图使用JS脚本读写不同域的JS作用域。问题根源来自JavaScript的同源策略:出于安全考虑,Javascript限制来自不同源的web页面JS脚本之间进行交互。否则就会出现各种获取用户私密数据的问题。

1、document.domain

它只能只能解决一个域名下的不同二级域名页面跨域,例如person.aa.com与book.aa.com,可以将book.aa.com用iframe添加到 person.aa.com的某个页面下,在person.aa.com和iframe里面都加上document.domain = "aa.com"。

2、Jsonp

Jsonp可以解决XmlHttpRequest请求不能跨域的限制,原理是通过动态创建一个<script> 元素来请求一段JS脚本,让这段脚本在页面作用域里执行,迂回实现类似Ajax的请求。

 1 //加载js文件
 2 function load_script(url, callback){  
 3     var head = document.getElementsByTagName('head')[0];  
 4     var script = document.createElement('script');  
 5     script.type = 'text/javascript';  
 6     script.src = url;  
 7     script.onload = script.onreadystatechange = function(){  
 8 if((!this.readyState||this.readyState === "loaded"||this.readyState === "complete")){  
 9             callback && callback();  
10             // Handle memory leak in IE  
11             script.onload = script.onreadystatechange = null;  
12             if ( head && script.parentNode ) {  
13               head.removeChild( script );  
14             }  
15         }  
16     };   
17     head.insertBefore( script, head.firstChild );  
18 }
View Code

相关文章: