什么是JSONP?
JSONP 不是 JSON,它是跨域访问的一种机制。JSONP(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
为什么需要这种机制?是因为同源策略。
JSONP如何跨域?
- 利用了
<script>
标签允许跨域访问的特点。 - 需要服务器对返回的 JSON 进行包裹,即需要其它域的服务器的支持。
<script type="application/javascript"
src="http://server.example.com/1234">
</script>
服务器返回的是一个 JSON 格式的数据,如果把这段代码作为 Javascript 执行则浏览器会报语法错误 SyntaxError: missing ; before statement
。因此,这个技巧想要成功的话,还需要目标服务器帮忙。
如果目标服务器对返回的 JSON 数据进行一下包装:
parseResponse({"name": "Anna", "Id": 123, "like": "nothing"});
那么我们只要事先定义好 parseResponse 函数,就可以对返回的数据进行处理了