首页 > 代码库 > JavaScript跨域
JavaScript跨域
只要协议、域名、端口有任何一个不同,都被当作是不同的域。
也就是“http://www.baidu.com”这个URL首部,必须完全一样才能互相通信。
一、通过jsonp跨域
原理:不同的域可以传输JS文件
服务器的data.php:
<?php $callback=$_GET[‘callback‘];//得到的回调函数名 $data=array(‘a‘,‘b‘,‘c‘);//需要返回的数据 echo $callback.‘(‘.json_encode($data).‘)‘;//输出 ?>
HTML:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>跨域</title> </head> <body> <script> function dosomething(jsondata){ console.log(jsondata) } </script> <script src=‘http://oa.daoyoudashi.com/shen/data.php?callback=dosomething‘></script> </body> </html>
或者用jquery:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>跨域</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script> </head> <body> <script> $.getJSON("http://oa.daoyoudashi.com/shen/data.php?callback=?", function(jsondata) { console.log(jsondata); }); </script> </body> </html>
结果:
["a","b","c"]
2、通过修改document.domain来跨子域
服务器中的a.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>a跨域</title> </head> <body> <script> function onl oad(){ var iframe=document.getElementById(‘iframe‘); console.log(iframe); var win=iframe.contentWindow; console.log(win); var doc=win.document; console.log(doc); var name=win.name; console.log(name); //无法获取window对象的name属性 } </script> <iframe id="iframe" src="http://oa.daoyoudashi.com/shen/b.html" onl oad="onLoad()"></iframe> </body> </html>
服务器中的b.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>b跨域</title> </head> <body> <div>内容</div> </body> </html>
结果:
JavaScript跨域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。