Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 脚本样式 / Ajax / ajax实现垮域访问初探

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