JSON和JSONP的区别是什么?

什么是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