实现Mashup的基本技术手段: cross domain ajax
由于安全方面的原因, XmlHttpRequest只能用来向来源网站发送请求, XmlHttpRequest甚至不能向具有相同根的不同Url发送请求, 比如从来自 http://www.foo.com/的网页上的, 你甚至不能象http://www.buz.foo.com/ 发送请求, 更不用说从http://www.foo.com/ 发送请求到http://www.boo.com/ 了. 这对于实现Web 2.0的一个基本特征, 即Mashup(即混合来自不同的网站的数据与服务), 来说, 是一个很大的限制.
为了克服这个限制, 人们做了很多努力. 其中最值得关注的是Google和Yahoo等是如何解决这一问题的. Google和Yahoo使用一种dynamic script, 请看有关资源:http://code.google.com/p/crosssafe/,
http://code.google.com/support/bin/answer.py?answer=70654, http://developer.yahoo.com/common/json.html.
在上述的资源里, 将该技术解释的很清楚, 我就不再重复.
除了上面一种途径, 还有一种途径, 利用iframe的一个特性, 就是, iframe的 domain 属性可以被改写, 改写成相同的domain后, 两个iframe中的script就可以互相访问了. 利用这一点可以实现http://www.foo.com/与http://www.buz.foo.com/ 之间的异源ajax. 这个途径不同于前一途径, 它可以使用XmlHttpRequest, 而前面提到的Google在map api等中用的途径, 不能用XmlHttpRequest. 当然, 后一种只能用于同根的不同url之间, 这仍然是一个的限制.
cross domain ajax的有关资源:
http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback
http://code.google.com/p/crosssafe/
http://code.google.com/support/bin/answer.py?answer=70654
http://docs.codehaus.org/display/MAP/Home/
http://ajaxpatterns.org/On-Demand_Javascript
http://programmableweb.com/
http://www.prototypejs.org/
http://developer.yahoo.com/common/json.html
http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html?page=1
http://fettig.net/weblog/2005/11/30/xmlhttprequest-subdomain-update/
posted on 2008-09-17 22:19 SuperSaiyan 阅读(2076) 评论(4) 编辑 收藏 举报