我们在开发中经常遇到不同域名之间资源交互,比如前台系统利用后台系统提供的接口请求需要的资源
这时候就会发生浏览器对ajax的限制,不允许跨域请求资源
例子:
http://www.a.com | http://www.b.com 是跨域
http://www.a.com | http://www.a.com:8080 是跨域
http://a.a.com | http://b.a.com 是跨域
http://www.a.com | http://www.a.com/api 不是跨域
所以不同域名不同端口都是跨域请求
对于这种情况,我们使用jsonp来解决
Jsonp的原理:
1、jsonp通过script标签的src可以跨域请求的特性,加载资源
2、将加载的资源(通过一个方法名将数据进行包裹)当做是js脚本解析
3、定义一个回调函数,获取传入的数据
4、通过优化可以将回调函数名传到服务器端返回
以上是原理
直接的使用方式是在ajax请求中直接将dataType返回数据类型设置为jsonp类型即可
例如
$.ajax({
url:"http://www.baidu.com",
type:"get",
dataType:"jsonp",
success:function(data){
alert(data);//请求成功
},
error:function(){}
});