周一的学院点开题被批的很惨,换了个校长,各类被抓严,班上已经有两个同窗打算休学了。哎,这周的聚会多是你们集聚的最后一次吧。熬着吧,仍是学习个人前端,无论老板学校咋逼了,找个好工做才是王道。今天把学习的几种跨域方法作个小结吧,否则就很容易忘了。php
JavaScript处于安全方面的考虑,不容许跨域调用其余页面的对象。也就是说a.com域名下的JS没法操做b.com或者c.a.com域名下的对象。JS跨域就是要解决在不一样的域之间的数据传输或通讯。只要是协议、域名、端口有任何一个的不一样,都被当作是不一样的域。以下所示:html
JsonP跨域是咱们最多见的跨域方法,它所基于的原理:直接经过XMLHttpRequest是不能请求不一样域的数据,可是咱们能够在页面中引入不一样域的JS文件。前端
假设a.html页面里面要获取http://b.com/data.php里面的json数据。那么咱们能够在a.html页面中能够这样实现:json
<script> function cb(jsondata){ //处理得到的json数据 } </script> <script src="http://b.com/data.php?callback=cb"></script>
在建立的script标签里src的url后面有个?callback=cb,这里cb就是咱们获取数据后要执行的函数。跨域
在data.php里面,返回的必须是一段可执行的JS文件。以下:安全
<?php $callback = $_GET['callback']; //获得回调函数名cb $data = array('a','b','c'); //返回的数据 echo $callback.'('.json_encode($data).')'; ?>
最终a.html页面获得的结果是cb(['a','b','c'])。这就获得咱们想要的数据了。函数