JSONP跨域的工作原理

来源:互联网 发布:情趣内衣淘宝卖家秀 编辑:程序博客网 时间:2024/05/21 15:00

JSONP 通过动态创建script标签可以跨域的原理,利用回调函数来执行处理数据的行为,

 是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback 或者开始就定义一个回调方法,参数给服务端,然后服务端返回数据时会将这个callback 参数作为函数名来包裹住 JSON  数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。



JSONP  和 JSON  的区别: JSON  是一种传输格式,而 JSONP  呢是一种数据的获取方式。其实他们没什么相关性, JSONP  可以跨域,JSONP只支持GET方式请求不支持。POST。

JSONP漏洞点主要有:callback参数注入、资源访问授权设置!同时他只支持get方式的请求

script请求返回JSON实际上是脚本注入。它虽然解决了跨域问题,但它不是万能的。

1,不能接受HTTP状态码

2,不能使用POST提交(默认GET)

3,不能发送和接受HTTP头

4,不能设置同步调用(默认异步)


<script>    function callback_fn(data){        console.log("callback_fn");        console.log(data);    }    $.ajax({        type:"get",        dataType:"jsonp",        url:"http://sax.sina.com.cn/newimpress?adunitid=PDPS000000047325&rotate_count=36",        jsonpCallback:"callback_fn",        success:function(data){            console.log("success");            console.log(data);        }    });</script>


<script>    /*1.动态创建script标签*/    var script = document.createElement('script');    /*2.动态创建回调函数*/    var success = function(data){        console.log(data);    }    /*3.设置接口地址为script标签的src并且加上回调函数的名称*/    script.src = "http://api.study.com/01jsonp.php?callback=success";    /*4.追加到html文档当中*/    document.body.appendChild(script);</script>

0 0
原创粉丝点击