有没有理由不对AJA〜X请求使用JSONP?

时间:2020-03-05 18:41:21  来源:igfitidea点击:

如果我们正在构建" AJA〜Xy"应用程序,那么即使我们没有计划任何"跨域"请求,使用" JSONP"请求/响应也有不利之处吗?

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

编辑:

我发现这也表明"安全性和错误处理"是潜在的问题...

There's no error handling. The script injection either works, or it doesn't.
  If there's an error from the injection, it'll hit the page, and short of a window wide error handler (bad, bad, very bad), you need to be sure the return value is valid on the server side.

我不认为"错误处理"是个大问题……我们大多数人会使用一个库来生成" JSON"……我的回答的格式正确性与这个问题无关。

和安全性:

There's documents out on the web that can help, but as a cursory check, I would check the referrer in the server side script.

看来这是任何响应类型的潜在问题……在安全领域,肯定没有JSONP独有的东西吗??

解决方案

回答

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

回答

缺点?触发" GET"请求并取回一些已执行的脚本是相当有限的。如果服务器抛出错误,则不会得到错误处理,因此我们还需要将所有错误都包装在JSON中。我们不能真正取消或者重试该请求。浏览器作者对动态生成的<script>标签的"正确"行为持保留态度。调试有些困难。

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

回答

jsonp调用失败时可以检索错误。

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

希望能帮助到你。

回答

这是我们可能要考虑使用JSONP的另一点..可能的内存泄漏。

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