JSONP(JSON with Padding)是 json 的一种"使用模式",可以让网页从别的域名(网站)那里获取资料,即跨域读取数据。
由于同源政策的原因,我们从不同的域名(网站)访问数据需要一个特殊的技术———JSONP
JSONP的原理
1、利用script
标签的src
属性来实现跨域。
2、通过将前端方法作为参数传递到服务器端,然后由服务器端注入参数之后再返回,实现服务器端向客户端通信。
通俗一点就是:
请求方:zhang.com 的前端程序员(浏览器)
响应方:wang.com 的后端程序员(服务器)
1、请求方创建 script,src 指向响应方,同时传一个查询参数 ?callbackName=xxx
2、响应方根据查询参数callbackName,构成出形如:
xxx.call(undefined,‘你要的数据’)
或
xxx(‘你要的数据’)
这样的响应
3、浏览器接收到响应,就会执行 yyy.call(undefined,‘你要的数据’)
4、那么请求方就知道了他要得数据
这就是 JSONP
JSONP 为什么不支持 POST
1、因为 JSONP 是通过动态创建 script 实现的
2、动态创建 script 的时候只能用 GET 没有办法用 POST