问题标签 [jsonp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3411 浏览

javascript - 是否有理由不将 JSONP 用于 AJA~X 请求?

如果您正在构建一个应用程序,即使您不打算处理任何请求AJA~Xy,使用请求/响应是否有任何缺点?JSONPcross-domain

我唯一能想到的是回调包装器有几个额外的字节......

编辑:

我发现也表明security and error handling潜在的问题......

没有错误处理。要么有效,script injection要么无效。如果injection来自server side.

我认为这不是error handling什么大问题……我们大多数人会使用库来生成JSON……我的回答的格式正确与这个问题无关。

和安全:

网上有一些文档可以提供帮助,但作为粗略的检查,我会检查server side脚本中的引用者。

这似乎是任何类型响应的潜在问题......当然,JSONP在安全领域没有什么独特的......?

0 投票
2 回答
51116 浏览

javascript - 提供 JSONP 的最佳内容类型?

我有一个 web 服务,在没有指定回调的情况下调用它会返回一个 JSON 字符串,application/json用作内容类型。

当指定回调时,它会将 JSON 字符串包装在回调函数中,因此它不再是真正有效的 JSON。我的问题是,我应该像application/javascript在这种情况下那样使用它还是仍然使用它application/json

0 投票
4 回答
6948 浏览

jquery - IE6中的jQuery JSONP问题

使用 IE6 从不同域中的服务器检索 JSONP 响应时遇到问题。

当我使用 JSONP 对与网页相同域中的服务器进行相同的 AJAX 调用时,所有浏览器(包括 IE6)都运行良好。但是,当我使用 JSONP 在域 (XSS) 之间进行调用时,Internet Explorer 6 会锁定。具体来说,CPU 达到 100% 并且永远不会达到“成功”回调。我在域之间取得成功的唯一一次是响应非常短(通常小于 150 字节)。响应的长度似乎很重要。

我正在使用 jQuery 1.2.6。我试过 $.getJSON() 方法和 $.ajax(dataType: "jsonp") 方法没有成功。这在 FF3 和 IE7 中运行良好。我找不到其他有类似问题的人。我认为 IE6 中的 jQuery 完全支持这种类型的功能。

非常感谢任何帮助,

安德鲁


这是进行 AJAX 调用的 html 页面的代码。制作此文件(和 jquery 库)的本地副本并使用 IE6 试一试。对我来说,它总是会导致 CPU 在没有响应的情况下出现峰值。

这是响应中返回的 JSON。根据 JSLint,它是有效的 JSON(一旦删除了围绕它的方法调用)。实际结果会有所不同,但这似乎是导致失败的最简单示例。服务器是一个 ASP.Net 应用程序,返回类型为“application/json”的响应。我尝试将响应类型更改为“application/javascript”和“application/x-javascript”,但没有任何影响。我真的很感激帮助。

0 投票
3 回答
615 浏览

javascript - 为什么这个远程脚本会导致 IE6 挂起?

请查看下面列出的 html,让我知道为什么 IE6 在尝试加载远程脚本时冻结(位于“ http://code.katzenbach.com/Default.aspx ”)。该脚本返回 JSONP 并执行标题中列出的“callbackFunction”。当它正确运行时,您会看到一个显示数字 1-500 的弹出警报。这在 FF3 和 IE7 中运行良好。我不明白为什么它在 Internet Explorer 6 中失败 - 处理器被固定并且一切都挂起。

自己运行它,如果您遇到同样的问题,请告诉我。我整天都在盯着这个问题。谢谢你的帮助。

安德鲁

0 投票
1 回答
1987 浏览

json - 如何从 Flickr API 获取照片 ID?

我正在尝试使用 JQUERY 从 Flickr 组中获取照片。我可以取回有效的 JSON,但不知道如何访问实际照片。返回的 JSON 包含一个空列表,我希望在其中有照片。

因此,当我将其插入浏览器时:

我回来的json是这样的:

它似乎知道有六张照片,但照片列表是空的。我假设我错过了一步。任何帮助,将不胜感激。

0 投票
4 回答
12037 浏览

javascript - 使用命名函数作为 jQuery 中 $.getJSON 的回调来满足 Facebook 请求签名需求

我正在尝试通过 jQuery 访问 Facebook API Admin.getMetrics 方法。我在服务器端正确地编写了请求 url(为了让我的应用程序保密)。然后我将 url 发送到浏览器以使用jQuery.getJSON().

Facebook 要求我将我的所有请求参数的副本连同我的应用程序密码一起发送,以验证我的真实性。问题是 jQuery 想要生成回调函数本身的名称,以便与它为您传入的匿名函数提供的名称相匹配,以便在数据返回时调用。因此,函数的名称在执行之前不可用,jQuery.getJSON()并且由于签名不匹配,Facebook 认为我的请求是不真实的(我发送的签名不包含正确的回调参数,因为直到jQuery.getJSON()运行才生成)。

我能想到的解决这个问题的唯一方法是以某种方式指定我的函数的名称,jQuery.getJSON()而不是让它保持匿名。但我在 jQuery AP 中找不到这样做的任何选项。

0 投票
2 回答
843 浏览

ajax - JSONP 和跨域查询 - 如何更新/操作而不是仅仅阅读

所以我正在阅读 The Art & Science of Javascript,这是一本好书,它有一个关于 JSONP 的好部分。我今天一直在阅读所有关于它的内容,甚至在 StackOverflow 上查看了所有问题。JSONP 是个好主意,但它似乎只解决了获取数据的“同源问题” ,而没有解决更改数据的问题。

我只是错过了所有讨论这个问题的博客,还是 JSONP不是我希望的解决方案?

0 投票
10 回答
89700 浏览

javascript - 使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为“jsonp”的 $.ajax)错误?

将 JSONP 与 jQuery 一起使用时是否可以捕获错误?我已经尝试了 $.getJSON 和 $.ajax 方法,但都不会捕获我正在测试的 404 错误。这是我尝试过的(请记住,这些都可以成功,但是我想在失败时处理这种情况):

并且:

我也尝试添加 $.ajaxError 但这也不起作用:

提前感谢您的任何回复!

0 投票
1 回答
23195 浏览

.net - 使用 JSONP 与 .net 对话的 JQuery 有哪些好的示例?

正如问题所说,Jquery 使用 JSONP 与 .net 页面或 Web 服务对话有哪些好的示例(或者只是示例)?

我正在尝试编写一个页面,该页面使用 JQuery 调用另一个网站(因此我需要使用 JSONP)来托管 web 服务/网页(两者都可以),但我找不到一个很好的例子。

0 投票
1 回答
2418 浏览

.net - JSON-P 与 WCF 的示例?

我正在尝试制作一个可以与 JSON-P 一起使用的 WCF 服务(长话短说,我们必须跨域调用 Web 服务并接收回调,所以我需要它与 JSON-P 一起使用)。

我在 MSDN ( http://msdn.microsoft.com/en-us/library/cc716898.aspx )上找到了一个代码示例。如果我提取 ZIP 文件并导航到 Samples\WCFWFCardSpace\WCF\Extensibility\Ajax\JSONP\CS,我会得到一个项目,其中创建了某些绑定和扩展,这将使 WCF 能够发出对返回 JSON 后的 JS 函数。

不幸的是,当我尝试复制此代码并在我的项目中实现它时,它不起作用。

我收到以下错误:

找不到配置绑定扩展“system.serviceModel/bindings/jsonpBinding”。验证此绑定扩展是否已在 system.serviceModel/extensions/bindingExtensions 中正确注册并且拼写正确。

就好像微软的开发人员遗漏了一些重要的代码,而我不确定他们遗漏了什么或它的目的是什么。

有没有人有使用 WCF 和 JSON-P 的经验?

如果有办法让这个示例项目工作,我会全力以赴。

如果有另一种方法可以从 Javascript 到 WCF 进行跨域 Web 服务调用,我也很感兴趣。