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

时间:2008-08-21 00:56:45

标签: javascript ajax json jsonp

如果您正在构建AJA~Xy应用,即使您没有计划任何JSONP请求,使用cross-domain请求/响应是否有任何缺点?

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

修改

我发现this也暗示security and error handling是潜在的问题......

  

没有错误处理。 script injection可以有效,也可以不有效。   如果injection出现错误,它会点击页面,并且没有窗口错误处理程序(坏,坏,非常糟糕),你需要确保返回值在{{{ 1}}。

我认为server side不是一个大问题......我们大多数人都会使用库来生成error handling ...我的反应的良好结构不是关注这个问题。

和安全性:

  

网上有文档可以提供帮助,但作为粗略检查,我会在JSON脚本中检查引荐来源。

对于任何类型的回复来说,这似乎是一个潜在的问题......当然,安全领域的server side没有什么独特之处......?

4 个答案:

答案 0 :(得分:9)

下行?这是相当有限的 - 您触发“GET”请求并返回一些已执行的脚本。如果服务器抛出错误,则不会得到错误处理,因此您还需要将所有错误包装在JSON中。您无法真正取消或重试请求。您受各种浏览器作者对动态生成的<script>标记的“正确”行为的看法的支配。调试有点困难。

那就是说,我偶尔使用它,并没有遭受过。 YMMV。

答案 1 :(得分:5)

当jsonp调用失败时检索错误。

http://code.google.com/p/jquery-jsonp/

希望它有所帮助。

答案 2 :(得分:2)

我想说最大的限制可能是让浏览器呈现脚本标签来调用服务器的额外开销。另外,JSONP真的被认为是AJAX,因为它实际上并没有使用XMLHttpRequest对象吗?

答案 3 :(得分:0)

以下是JSONP可能要考虑的另一个问题......可能的内存泄漏..

http://neil.fraser.name/news/2009/07/27/