JSON是一种轻量级的数据交换格式。
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
JSONP是“JSON with padding”的简写,我将其翻译为“被包裹的JSON”,
JSONP技术是早期某个(些?)聪明的程序员发明的跨域资源获取方式,由于该技术的简单易用,逐渐变得越来越流行,最终成为经典的跨域获取资源方案。
JSONP技术与AJAX技术无关:
虽然同样牵扯到跨域获取资源这个主题,但我们应该已经清楚的看到,
JSONP的本质是绕过AJAX获取资源的机制,使用原始的src
属性获取异域资源;
JSONP技术缺陷:
(1)无法发送POST请求,也就是说JSONP技术只能用于请求异域资源,无法上传数据或修改异域数据;
(2)无法监测JSONP请求是否失败;
(3)可能存在安全隐患
别忘了,JSONP之所以能成功获取异域服务器资源,靠的是服务器动态生成了回调函数,并在页面中执行,
那么如果服务器在原有的回调函数下再添加些别的恶意JavaScript代码会怎样?当然也会被执行!
所以在使用JSONP技术时,一定要确保请求资源的服务器是值得信赖的;