您的位置:首页 > Web前端 > JavaScript

JSONP原理

2015-09-25 16:49 375 查看
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是完全不一样的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: