AJAX VS JSon“跨域内置安全”问题

时间:2010-01-24 19:52:35

标签: jquery ajax security json

看起来我无法使用“AJAX”在当前域名之外拨打电话。但是我可以在JQuery中调用twitter API(带有JSON)...是不是都使用XMLHTTP对象?如果是这样(或不是),为什么我能用JSON(使用JQuery)调用另一个域名但不能用AJAX调用?无论如何,Ajax和JSON之间有什么区别?

2 个答案:

答案 0 :(得分:7)

twitter API使用JSONP,它不使用XMLHTTPRequest,但使用<script>标记包含“外来”javascript。然后,此脚本在您自己的javascript中调用函数。

如果没有这种“黑客”(实际上就是这样的:黑客攻击),就不可能在第三方网站上集成谷歌地图。

以下是有关JSONP的更多信息:

http://ajaxian.com/archives/jsonp-json-with-padding

或关于JSON的维基百科文章:

http://en.wikipedia.org/wiki/JSON#JSONP

答案 1 :(得分:0)

JSON是一种文件格式,而AJAX是一种JavaScript技术,用于在页面加载完成后从Web服务器发送和接收数据。 AJAX中的X用于XML(也是一种文件格式),它是JSON的替代品,但它有点用词不当,因为很多人称之为AJAX的东西实际上根本不使用XML。

LeyBaert先生关于JSONP的链接在实际解释Twitter API中发生的事情方面非常有用;它根本不是XMLHTMLRequesting,只有另一个脚本标记指向twitter网站上的javascript文件,然后在页面首次加载时随页面的其余部分一起加载。

你可以通过这个得到整洁的东西,但我不认为你可以在页面加载后(就像使用AJAX一样),除非你开始搞乱隐藏的IFrame或类似的东西。如果你真的需要在没有XMLHTTPRequests的情况下获得AJAX风格的东西,那就是你想要研究的东西;动态地将IFrame添加到文档中,该文档引用从另一个站点请求脚本(或类似)的页面。对here的优缺点进行了一些讨论。