JSONP原理

来源:互联网 发布:linux 挂载ntfs硬盘 编辑:程序博客网 时间:2024/06/05 10:35
AJAX在取数据的时候,无法做到跨域,即当前网页的地址和我们要取的数据的地址不在一个域下,因为浏览器都有一个“同源策略”,两个页面的域名必须在同域的情况下,才能允许通信
同源策略:相同域名、相同端口、相同协议
同源策略可以有效的阻止一些危险行为,比如嵌入恶意代码等,但有时候需要进行一些必要的跨域通信,则可以使用一些技术手段来实现,比如JSONP
JSONP原理:(JSON WITH PADDING)
同源策略并不会干涉src指向的路径(<script><iframe><img>等都含有src属性)
例子:
www.aaa.com中
<script type="text/javascript" src="http://www.bbb.com/abc.js"></script>
<script>
function abc(json){
alert(json['name']);
}
</script>


www.bbb.com/abc.js中
abc({'name':'Jack','age':'24'});
//页面会弹出Jack
我们可以取到www.bbb.com/abc.js里面的一个abc函数,这个函数被加载到www.aaa.com中,加载完成后,就应该执行abc函数,然后我们在www.aaa.com中定义abc函数,函数里面是处理数据的语句,就实现了简单的跨域访问数据了


JSONP总结:
1、JSONP是为了传数据而存在的技术,因为AJAX受限于同源策略,所以JSONP通过<script>的src属性不受同源策略的控制,实现其功能
2、本质是创建<script>标签,其src指向我们的数据地址,地址后面附带一个回调函数(callback),然后声明这个回调函数,这样只要一引入上面的<script>标签,就相当于执行了那个回调函数
3、jQuery将JSONP内置在了AJAX里,但是AJAX和JSONP是完全不一样的
0 0