码迷,mamicode.com
首页 > Web开发 > 详细

JS的jsonp是什么?5分钟学会jsonp跨域请求

时间:2019-04-05 18:04:14      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:页面   浏览器   运行   主机   http请求   rip   js代码   调用   兼容   

一、jsonp是什么?

jsonp是解决跨域请求的一种技术。浏览器为了防止CSRF攻击会采用同源策略(协议/主机/端口均相同)限制,对非同源发起http请求(即跨域请求)会被浏览器阻止。

 

二、jsonp跨域请求的原理?

script标签的src属性不受同源策略限制,用此方式对非同源服务器请求资源,返回的JS代码会调用指定的函数,携带的参数就是所需的数据,这样就完成了跨域请求。

 

三、原生JS的jsonp跨域请求:

首先声明一个处理返回数据的函数,返回的JS代码会调用此函数:
function dosomething(data) {
    console.log(data)
}

然后创建script标签添加到页面,src设为请求地址,请求地址的参数规定了返回的函数名:

<script src="http://example.com/data.php?callback=dosomething"></script>

最后服务端会返回一段JS代码,它会调用指定的函数,携带的参数就是所需的数据,至此跨域请求就完成了。

dosomething({name:"逐逸"});

 

四、jQuery的jsonp跨域请求:

这里的success就跟上面的dosomething一样。

$.ajax({
  url: "http://example.com/data.php",
  type: "GET",
  dataType: "jsonp", //指定服务器返回的数据类型
  success: function(data) {
    console.log(data)
  }
});

 

五、jsonp的优点与缺点:

优点:它不被同源策略限制,而且兼容性更好,在古董浏览器中都可以运行。
缺点:它只支持 GET 请求,而不支持 POST 等其他类型的 HTTP 请求。 

JS的jsonp是什么?5分钟学会jsonp跨域请求

标签:页面   浏览器   运行   主机   http请求   rip   js代码   调用   兼容   

原文地址:https://www.cnblogs.com/joych3n/p/10658233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!