使用jsonp的方式处理CORS跨域的问题
- 什么是JSONP
- JSONP(JSON with Padding)是JSON的一种”使用模式“,可用于解决主流浏览器的跨域数据访问的问题。
- JSONP的实现原理
- 由于浏览器同源策略限制,网页无法通过Ajax请求非同源的接口数据。
- script标签不受浏览器同源策略的影响,可以通过src属性,请求非同源的js脚本数据。
- 通过函数调用的形式,接收跨域接口响应回来的数据。
- JSONP的缺点
- 只支持GET数据请求,不支持POET数据请求。
- JSONP与Ajax之间无任何关系,其没有用到XMLHttpRequest对象。
- 用jquery来实现jsonp的请求
先定义一个方法
function callbackbbb(res){ console.log(res); } $.ajax({ url: "http://xxx.com/api/xxx", type: "get", dataType:'jsonp', data: { jsoncallback:'callbackbbb' }, success: function (res) { console.log('请求结果'); console.log(res); } });
然后对应的接口处理只需要输出这样的字符串就好了
这里用php代码实现
$jsoncallback = $_GET[‘jsoncallback’];//这里就是前端的回调方法名 $json_data = ‘[“0”, “可以多个参数”]’; echo $jsoncallback . “(” . $json_data . “)”;
这样就可以看到前端的回调方法打印出数据了