JSONP实现原理
jsonp,其实就是单纯为了实现跨域请求而创造的一个欺骗(trick)。
虽然,因为同源策略的影响,不能通过XMLHttpRequest请求不同域上的数据(Cross -origin reads)。但是,在页面上引入不同域上的js脚本文件却是可以的(Cross -origin embedding)。因此,在js文件载入完毕之后,触发回调,可以将需要的data作为参数传入
注意,实现方式(需前后端配合)
优点
兼容性好(兼容低版本IE)
缺点
JSONP只支持GET请求,XMLHttpRequest相对于JSONP有着更好的错误处理机制。
实现
1.服务端采用的是Node,服务端处理请求方法如下
router.get('/', function(req, res, next) {
console.log('收到客户端的请求:', req.query);
// 传回到客户端的数据
let data = JSON.stringify({
'status':200,
'result':{
'name':'柳成荫',
'site':'123456'
}
});
// 获取方法名称 - 这是客户端传过来的方法名参数
// 因为这个方法名必须是客户端有的,必须要客户端告诉服务端是哪个方法
let methodName = req.query.callback;
let methodStr