js跨域问题

js不让不同域名下的数据交互。
什么时候不存在跨域问题?
www.a.com/xx.js www.a.com/文件夹名/xx.js不存在跨域问题。其他都存在。

如www.a.b.com和www.a.com子域和主域间不可。不同域名间更不可以了,指向同一个IP地址也不可以。


ajax:XMLHttpRequest();不能跨域,因为它的XMLHttpRequest对象在安全限制下不同意跨域(数据交换);


解决方法:1.子域和主域都设置document.domain = 'a.com'
2.服务器代理:不同域名下通过服务器代理,XMLHttpRequest下的代理文件(服务器做运算),优点,有数据交换,缺点,增加服务器的压力;
3.script标签(src属性)(不存在跨域问题):jsonp---把json放到了了一个盒子里,function box(json){alert(json.name);}
a.com下的《script src="www.b.com/json.js">scr指向b的js文件,里面有数据,然后再a里就可以使用,但要有函数来调用。
跨域.html里
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>跨域问题</title>
<script>
// function createjs(url){
// var script=document.createElement('script');
// script.src=url;
// document.getElementsByTagName('head')[0].appendChild(script);
// }
// createjs('json.js?callback=use');
function use(json){
alert(json.name);
}
</script>
</head>
<body>
<script>

</script>
<script src="json.js" type="text/javascript"></script>
<!-- 另一个域下的js -->
</body>
</html>
-----------------------------
json.js里
use({name:'aaa'});


4.window.name----->a.html里有框架b.html,在b里使用window.name=“数据”,在与a同一个域名下创建代理文件xx.html(可以是空文件);
代理文件和window.name里的数据共享。

原文地址:https://www.cnblogs.com/zhangxinxin111/p/4726705.html