ajax实现垮域访问初探2011-08-23这个应该归到javascript的安全性问题一般服务器A设置的是不允许别的域的机器B执行B上的ajax调用服务器A上的资源原因,可以举个简单的安全隐患例子:假设ajax可以垮域访问,那么我在自己机器上可以写ajax请求Google各类web应用中的资源比如先用firefox研究GMail在登录过程中大量ajax请求的地址以及参数,可以得到用户cookie的验证过程然后写js去跨域获取别的用户的cookie,这样可以绕过用户的GMail密码而登入他人的GMail邮箱那么有了ajax跨域限制,是不是就真的不能做ajax垮域访问了?ajax垮域确实不行,但是我们可以中转实现,也就是所谓的代理原理很简单,在自己的js跟远程服务器A的资源之间架设一个自己的容器可以用asp、php、java、.net等所有可以的动态web语言以asp为例(获取热得快网站某个用户的好友列表,返回xml数据格式)<% p = "http://redekuai.com/api/user_friends_xml/funy" Response.BinaryWrite ZQcnGet(p) Response.Flush Function ZQcnGet(url) Set Retrieval = CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "Get", url, False, "", "" .Send ZQcnGet = .ResponseBody End With Set Retrieval = Nothing End Function %>这段代码保存为一个proxy.asp,然后放到IIS里,这个时候就可以随便找个机器写js了,用ajax请求proxy.asp,最后相当于实现了ajax垮域访问php的示例代码更简单echo file_get_contents("http://redekuai.com/api/user_friends_xml/funy"");?>注:php版本需要>= 4.3.0