Google刚刚发布了Google AJAX Feed API ,文档和范例在这里。
【背景】流行的AJAX程序都大量使用了JavaScript和XMLHttpRequest,而XMLHttpRequest遵循同源策略,即通常所说的跨域问题。什么是同源策略:一般情形下,为安全起见,浏览器不允许你在客户端通过XMLHttpRequest访问别的域,默认你只能存取同域名、同一端口、同一协议下的资源。这给我们造成了麻烦,很明显,在不少情形下,获取别的网站的信息/服务是非常有用的。
【解决方案】通常解决方法有三种:
- 在同一域的服务器端建立一个代理,浏览器向该代理网址发送请求
,然后该代理向其他域的网址发请求,在获取回复后 ,或作处理或按原样发回到浏览器。 - 使用按需(On-Demand) Javascript 脚本。在页面内动态生成新的,将其src属性指向
别的网站的网址,这个网址返回的内容必须是合法的Javascri pt脚本,常用的是JSON消息。 - 使用IFRAME。在页面内嵌或动态生成指向别的网站的IFRAM
E,然后这2个网页间可以通过改变对方的anchor hash fragment来传输消息。
都是比较麻烦的。
后来,yahoo提供了Yahoo Pipes,一个可视化界面的feed聚合服务程序,业界评价挺高,当然还有其他几个mashups程序可供选择。但是Google AJAX Feed API可能是最适合developer使用的了。
【Google AJAX Feed API】 现在你只要书写几行JavaScript程序,不再需要建立复杂的服务器端代理,Google代劳了所有mashups开发。
【延伸阅读】关于 Cross Site AJAX:
1. Security Considerations: Dynamic HTML
http://msdn.microsoft.com
2. About Cross-Frame Scripting and Security
http://msdn.microsoft.com
3. Cross-Domain Proxy
http://ajaxpatterns.org/Cross
4. Cross Domain XMLHttpRequest using an IFrame Proxy
http://manual.dojotoolkit.org
5. Back Button Support for Atlas UpdatePanels
http://www.nikhilk.net/BackButt
6. Cross-document messaging hack
http://blog.monstuff.com
7. Calling web services hosted outside of your application with “Atlas”
http://blogs.msdn.com/federalde
8. AJAX Tip: Passing Messages Between iframes
http://www.25hoursaday.com