数据访问的跨域解决方案:Jsonp

           跟iframe脚本跨域调用中所面临的问题一样——js脚本不能跨域直接调用iframe(其它域)的脚本,在浏览器中数据的访问也存在跨域的限制:只要是跨域了,不管是什么服务(如WCF、),什么方式的请求(常用的Ajax请求),都会因为安全考虑被浏览器阻止(浏览器都会遵守基本的安全协议,否则没人改用)。但是浏览器这么做,也大大限制了Web应用跨域访问的灵活性,特别是对于大型应用要考虑的分布式部署访问的。

          有人注意到了前端html页面中允许在<javascript src=“..”>中跨域”引用“脚本——注意是“引用”,不是直接“调用”。例如,jquery.js脚本框架广泛用于的各类网站,一般大家做Web应用程序时都会直接从所有人都公认的网站引用jquery.js,而不是将jquery放到自己的应用程序中。一方面利用浏览器缓存,减少对jquery的加载(加载时间),提高性能;另一方面,减少服务器的负载(对于大型应用会考虑到这一点负荷)。          


<script  type="text/javascript" src="http://www.xxx.com/1.7/jquery.js"></script>

         “引用”的脚本,虽然不是直接调用,但也会在浏览器执行的。充分利用这一点漏洞,更确切地说充分利用这一特性,就解决了跨域访问数据的问题,并称之为JsonP技术。实际上,跟iframe脚本跨域调用一样,都是在js脚本允许范围内的非正常使用,却完美地解决了绕过了浏览器跨域的限制。

       

$.ajax({
dataType:'jsonp',
data:'id=10',
jsonp:'jsonp_callback',
url:'http://www.xxx.com/getdata',
success:function(){
//dosomething
},
});

         之前使用Jquery的Ajax时,在数据返回类型中看到jsonp(Json with Padding),因为跟其它数据返回类型text、json、xml等放一起,还以为跟json一样一种数据格式。当时没怎么注意,以为是在json的基础上加了料。后来才发现,Jsonp只是一跨域访问数据解决方案,特此记录一下。


         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值