跨域之JSONP
什么是跨域
客户端与服务器间请求数据时出于安全基于同源策略限制的考虑,不能够跨域访问,所谓跨域就是请求数据时,域名、协议、端口号有一种不一样就被视为跨域。
JSONP的基本原理
JSONP由回调函数和数据两部分组成,回调函数是当响应回来时应该在页面中调用的函数,该回调函数的名字一般在请求时指定的;数据就是传入回调函数的JSON数据;JSONP是被包含在函数调用中的JSON。
基本原理:是利用<script>
标签中的‘src’属性没有跨域限制。
过程
- 在客户端定义1个函数 .demo(data) 参数就是服务器返回的数据
- 利用src属性没有跨域限制 发送请求,并把事先定义好的回调函数名称通过QueryString方式传递给服务器
例如(http://api.douban.com/v2/subject/1109867?callback=demo) - 服务器就可以通过 $GET[“callback”]拿到传递的函数名称,然后通过数据处理,假设处理后的数据为:
[{id:1,name:”jack”,age:12},{id:2,name:”rose”,age:15}]
那么返回的数据:
demo([{id:1,name:”jack”,age:12},{id:2,name:”rose”,age:15}])
4.服务器拿过返回的数据后当做JS代码处理
调用demo函数,将服务器返回的数据传入demo()函数内部中进行处理