什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据格式,它以文本形式表示数据对象,且易于阅读和编写。同时,由于其简单性和可扩展性,JSON已经成为了互联网上最常用的数据交换格式之一。
JSON是一个键值对结构的集合。一个JSON对象可以包含多个键值对,每个键值对由一个键和一个与之相关联的值组成。这些键值对被包含在花括号 {}
中,并用逗号 ,
分隔。
以下是一个JSON对象的示例:
- ------- ------- ------ --- ------- ---- ----- -
什么是JSONP?
JSONP(JSON with Padding)是一种跨域数据交互解决方案,它利用了HTML中script标签的特性来实现。通过JSONP,我们可以从不同域名下的服务器获取数据并将其显示在当前页面上。
JSONP的原理是利用script标签的src属性可以访问不同域名下的资源文件的特性,发起一个GET请求,服务端返回的是一个函数调用,把需要传递的数据作为参数传回到客户端中,客户端可以直接拿到数据并处理。
以下是一个JSONP的示例代码:
-------- ---------------- - ------------------ - --- ------ - --------------------------------- ---------- - ------------------------------------------------- ----------------------------------
请求的URL中包含了一个名为 callback
的参数,该参数值是一个前端定义的回调函数名称。在服务端返回的数据中,会将需要传递的数据作为该回调函数的参数传递,并将整个回调函数作为一个字符串返回。
JSON和JSONP的区别
- 数据格式不同:JSON是一种数据格式,而JSONP则是一种跨域数据交互方式。
- 安全性问题:使用JSONP时存在着一定的安全风险,因为服务端完全可以返回任意的JavaScript代码,攻击者可以利用这个漏洞来进行XSS攻击等。
- 跨域支持:JSONP允许跨域请求,而纯JSON请求同源策略会限制跨域请求。
JSONP的应用场景
由于JSONP能够解决浏览器跨域问题,因此常常被用于HTTP API数据的获取。例如,我们可以通过JSONP来获取百度搜索的联想词:
-------- ---------------- - -------------------- - --- ------ - --------------------------------- ---------- - ------------------------------------------------------- ----------------------------------
以上就是JSON和JSONP的区别以及JSONP的应用场景,希望对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/8393