jsonp解决跨域访问的问题
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。 主要用于解决ajax的跨域访问
由于浏览器的同源策略(浏览器最基本的安全功能)。该策略会阻止不同源之间的交互,
同源: 同协议,同域名,同端口
jsonp解决跨域问题的基本方式
核心思想
浏览器虽然有同源策略,但是 src 和 href 两个属性却可以跨域访问。 可以利用这一“漏洞”来请求另一个网站的页面。
jsonp本质
即利用script的src发送一个get请求,来获取跨域接口提供的信息
jquery实现jsonp
document.getElementById('btn').onclick = function () {
$.ajax({
url: 'http://api.jisuapi.com/weather/query?appkey=************&city=北京',
type: 'get',
dataType: 'jsonp',
jsonp: 'callback',
success: function (msg) {
console.log(msg);
let tbodyStr = template('tpl', msg.result);
$('#content').html(tbodyStr);
}
})
}
- jquery中发送jsonp请求发送方式必须为get
- jquery中发送跨域请求时必须设置接收到的数据格式为jsonp
- jquery只能使用
$.ajax
发送jsonp请求,$.get与$.post
方式不能发送jsonp请求