加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:00:45 所属栏目:百科 来源:网络整理
导读:跟iframe脚本跨域调用中所面临的问题一样——js脚本不能跨域直接调用iframe(其它域)的脚本,在浏览器中数据的访问也存在跨域的限制:只要是跨域了,不管是什么服务(如WCF、),什么方式的请求(常用的Ajax请求),都会因为安全考虑被浏览器阻止(浏览器都

跟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只是一跨域访问数据解决方案,特此记录一下。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读