如果您正在构建一个 AJA~Xy 应用程序,使用有什么缺点吗 JSONP 请求/响应,即使您没有计划任何 cross-domain 要求?

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

编辑:

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

没有错误处理。这 script injection 要么有效,要么无效。如果出现错误 injection, ,它会到达页面,并且缺少窗口范围的错误处理程序(坏,坏,非常坏),您需要确保返回值在 server side.

我不认为 error handling 是一个很大的问题...我们大多数人都会使用库来生成 JSON...我的回答的格式是否正确并不是这个问题所关心的。

和安全:

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

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

有帮助吗?

解决方案

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

也就是说,我偶尔使用过它,并且没有受到影响。YMMV。

其他提示

当 jsonp 调用失败时检索错误是可能的。

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

希望能帮助到你。

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

这是您可能需要考虑 JSONP 的另一点..可能存在内存泄漏..

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top