jsonp跨域其实也是javaScript设计模式中的一种代理模式。在html页面中通过相应的标签从不同域名下加载静态资源文件是被浏览器允许的,所以我们可以通过这个“犯罪漏洞”来进行跨域。一般,我们可以动态的创建script标签,再去请求一个带参网址来实现跨域通信
//原生的实现方式
let script = document.createElement('script');
script.src = 'http://www.nealyang.cn/login?username=Nealyang&callback=callback';
document.body.appendChild(script);
function callback(res) {
console.log(res);
}
//jquery也支持jsonp的实现方式
$.Ajax({
url:'http://www.nealyang.cn/login',
type:'GET',
dataType:'jsonp', //请求方式为jsonp
jsonpCallback:'callback',
data:{
"username":"Nealyang"
}
})
虽然这种方式非常好用,但是一个最大的缺陷是,只能够实现get请求。