JSONP是什么?

JSONP是什么?

JSONP是JSON with Padding的缩写,是一种解决跨域数据获取的方案。由于浏览器的同源策略限制,不同域名之间的前端JS代码不能相互访问到对方的数据,JSONP通过script标签的特性,实现在不同域名的网页间传递数据。

其原理是在客户端页面上定义一个回调函数(callback),然后通过script标签向外部服务器请求数据,并将定义好的回调函数名称作为参数放在url请求地址里,服务器成功接收请求后,使用该参数将数据传递给定义好的回调函数并返回,客户端页面中定义好的回调函数接收参数后进行处理。

例如:

客户端页面中定义好回调函数 jsonpCallback,需跨域获取数据:

在外部服务器的data.php中可根据请求参数生成数据,并将数据传递到定义好的回调函数中返回数据:

需要注意的是,由于JSONP使用script标签获取数据,所以只支持GET请求,而不支持POST请求。此外,JSONP采取的是无状态机制,不支持像HTTP协议那样有状态的操作,故容易被恶意利用。因此,开发中需谨慎使用。