JSONP
说到 JSONP 就要说到同源策略(Same Origin Policy), 同源策略是浏览器最核心的也是最基本的安全功能。javascript
浏览器的同源策略,限制了来自不一样源的 “document” 或脚本,对当前 “document” 读写或设置某些属性。html
通俗的说法就是外来的脚本没法碰到自家的文档。java
影响 “源” 的因素有四个: 主机名 host,子域名、端口、协议。web
JSONP(JSON with padding). 这是一种从远端服务器抓取数据的方式。原理是经过建立一个 script 标签,所辖的外部文件包含一段 JSON 数据,数据是由服务器返回的,做为参数包装在一个函数调用中。script 标签获取脚本文件不受跨域的限制(一样具备跨域加载数据能力的标签还有:img、iframe、link等标签,均不受同源策略的限制),全部的浏览器都支持这种技术。json
首先,在 head 里添加 script 标签跨域
<script src="http://example.com/data.json"></script>
预先定义全局函数,等待返回数据中的方法调用浏览器
window.jsonCallback = function(result) {
}
请求的文件里的数据是,一个方法还有做为参数的数据,数据加载到浏览器后,脚本会被执行,随之方法会被调用(方法已经定义好)安全
jsonCallback({"data":"foo"});
好在,jQ 已经把它包了起来服务器
jQuery.getJSON("http://example.com/data.json", function() {
})