JS的跨域理解

前言

  周一的学院点开题被批的很惨,换了个校长,各类被抓严,班上已经有两个同窗打算休学了。哎,这周的聚会多是你们集聚的最后一次吧。熬着吧,仍是学习个人前端,无论老板学校咋逼了,找个好工做才是王道。今天把学习的几种跨域方法作个小结吧,否则就很容易忘了。php

什么是跨域?

JavaScript处于安全方面的考虑,不容许跨域调用其余页面的对象。也就是说a.com域名下的JS没法操做b.com或者c.a.com域名下的对象。JS跨域就是要解决在不一样的域之间的数据传输或通讯。只要是协议、域名、端口有任何一个的不一样,都被当作是不一样的域。以下所示:html

JSONP跨域

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'])。这就获得咱们想要的数据了。函数

相关文章
相关标签/搜索