当前位置: 首页 > 面试题库 >

JavaScript 什么是JSONP,为什么创建它?

侯博裕
2023-03-14
问题内容

我了解JSON,但不了解JSONP。Wikipedia上有关JSON的文档是JSONP的最高搜索结果。它说:

JSONP或“带填充的JSON”是JSON扩展,其中将前缀指定为调用本身的输入参数。

??什么电话 这对我来说毫无意义。JSON是一种数据格式。没有电话

在第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP:

JSONP是脚本标记注入,它将响应从服务器传递到用户指定的函数。

我可以理解,但这仍然没有任何意义。

那么什么是JSONP?为什么创建它(它解决了什么问题)?我为什么要使用它?


问题答案:

实际上并不太复杂…

假设您正在使用域 example.com ,并且想向域发出请求 example.net 。要做到这一点,你需要 跨域
边界,一个 没有没有 在大多数browserland的。

绕过此限制的一项是<script>标签。使用脚本标记时,将忽略域限制,但是在正常情况下,您实际上无法对结果 任何事情,只是对脚本进行了评估。

输入 JSONP
。当您向启用了JSONP的服务器发出请求时,您将传递一个特殊参数,该参数告诉服务器有关您页面的一些信息。这样,服务器可以用页面可以处理的方式很好地包装其响应。

例如,假设服务器需要一个名为的参数 callback 来启用其JSONP功能。然后您的请求将如下所示:

http://www.example.net/sample.aspx?callback=mycallback

没有JSONP,这可能会返回一些基本的JavaScript对象,如下所示:

{ foo: 'bar' }

但是,使用JSONP时,当服务器接收到“ callback”参数时,它对结果的包装会有所不同,返回如下所示:

mycallback({ foo: 'bar' });

如您所见,它现在将调用您指定的方法。因此,在页面中,您定义了回调函数:

mycallback = function(data){
  alert(data.foo);
};

现在,加载脚本后,将对其进行评估,然后将执行您的函数。瞧,跨网域要求!

值得注意的是JSONP的一个主要问题:您失去了对请求的大量控制。例如,没有“不错”的方法来找回正确的故障代码。结果,您最终会使用计时器来监视请求等,这总是让人怀疑。JSONRequest的主张是一个很好的解决方案,它允许跨域脚本编写,维护安全性并允许对请求的适当控制。

与JSONRequest相比,CORS是推荐的方法。JSONP对于较旧的浏览器支持仍然有用,但是考虑到安全隐患,除非您别无选择,否则CORS是更好的选择。



 类似资料:
  • 问题内容: 我了解JSON,但不了解JSONP。Wikipedia上有关JSON的文档是JSONP的最高搜索结果。它说: JSONP或“带填充的JSON”是JSON扩展,其中将前缀指定为调用本身的输入参数。 ??什么电话 这对我来说毫无意义。JSON是一种数据格式。没有电话 在第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP: JSONP是脚本标记注入,它将响应从服务器传递到用户指定的函数。

  • 主要内容:同源策略,什么是 JSONP?,如何实现 JSONP,总结JSONP 不是一门编程语言,也不是什么特别的技术,它更像一个漏洞,程序员可以利用这个漏洞,实现跨域(可以简单理解为跨域名)传输数据。虽然 JSONP 与 JSON 看起来很像,但它们却是完全不同的,本节我们就来简单介绍以下 JSONP。 在介绍 JSONP 之前,先来介绍一下浏览器的同源策略。 同源策略 同源策略是由 Netscape(网景)提出的一个著名的安全策略,所有支持 JavaScrip

  • 本文向大家介绍JSONP的原理是什么?解决什么问题?相关面试题,主要包含被问及JSONP的原理是什么?解决什么问题?时的应答技巧和注意事项,需要的朋友参考一下 JS 动态插入 script 并将 src 指向后端 API,后台返回 json 并使用协定的 callback 函数把 json 包起来。浏览器以 JS 内容解析执行返回的内容,回调函数得以被调用并传入了返回的 json 对象。 解决的是

  • 每一个国家的都有其特殊国情,主要是原因是中国的网络太慢,及中国存在大量老旧的计算机,它们预装着window XP,IE浏览器最高只能升级到IE8, 出于这两方面的原因,我们需要一个体积更少,兼容性更好的React。并且之前facebook也闹过LICENSE问题,更是促进中国互联网公司决定自主研发框架,努力摆脱对外国框架的依赖。 对于我们公司而言,一个旅游公司, 在线上订火车票,飞机票, 景点门票

  • 问题内容: 明智地设置格式,明智地使用文件类型以及明智地使用实用程序? 问题答案: JSONP是带填充的JSON,也就是说,您将字符串放在开头,并在其周围加上一对括号。例如: 结果是您可以将JSON作为脚本文件加载。如果您之前设置了一个名为的函数,那么在脚本文件加载完成后,将使用一个参数(即JSON数据)调用该函数。这通常用于允许带有JSON数据的跨站点AJAX。如果您知道example.com正

  • 主要内容:JavaScript 的历史,JavaScript 与 ECMAScript 的关系,如何运行 JavaScript,JavaScript 的特点JavaScript(简称“JS”)是当前最流行、应用最广泛的客户端脚本语言,用来在网页中添加一些动态效果与交互功能,在 Web 开发领域有着举足轻重的地位。 JavaScript 与 HTML 和 CSS 共同构成了我们所看到的网页,其中: HTML 用来定义网页的内容,例如标题、正文、图像等; CSS 用来控制网页的外观,例如颜色、字体、