IE8 Beta2 AJAX 的更新篇之XDR(二)(IE8 Beta2 Hand-on Lab-XDR)

Croos-domain Request("XDR")
一.背景:
Web浏览器都有一个安全方针被叫着the same-site origin policy,这一原则阻止了跨域访问数据。下面的图显示了一个站点使用IE7或更低版本在不同域之间的访问。(图来自于IE8 beta2 Hand-on Lab)







而在IE8 beta2中,Web页面通过使用xDomainRequest对象代替server-to-server的请求来实现跨域请求。如下图所示:









XDRs要求Web page和server之间遵循一种规定。你能初始化一个跨域的请求通过创建一个xDomainRequest对象并且向一定特定的域建立一个连接。如果页面收到一个Access-Control-Allow-Origin:*的header的responds,表示完成了一个连接。例如:一个服务器端的ASP页面包含 下面的response header:

Response.AddHeader("Access-Control-Allow-Origin","*");


注意:为了保护用户的数据,跨域请求是匿名的,这意味着服务器端不能简单的找出是谁request data.结果,你仅仅能request和respond一些不是敏感的或者个人能确认的跨域数据。
二.API Documentation
下面的javascript代码片段介绍了xDomainRequest对象,以及它的事件,属性。在MSDN中有更详细的介绍,地址(http://msdn.microsoft.com/en-us/library/cc288060(vs.85).aspx
//创建一个新的XDR Object
xdr = new XDomainRequest();
//创建一个the request请求不能完成的错误方法
xdr.onerror = alert_error;
//请求时间已到的事件
xdr.ontimeout = alert_timeout;
//对象已经连接,正在返回数据的事件
xdr.onprogress = alert_progress;
//对象完成的方法
xdr.onload = alert_loaded;
//设定一个请求的时僮
xdr.timeout = timeout;
//在一个请求中得到content-type header
var content_type = xdr.contentType
//得到response的text
var response = xdr.responseText;
//创建一个跨域连接请求
xdr.open("get",url);
//发送请求
xdr.send();
//取消一个请求
xdr.abort();
三.代码例子

下载

注:所有例子都来源于IE Beta2 Hand-on Lab!

blogger: http://leo-zhang.blogspot.com/

 

posted @ 2008-10-12 21:20  译时代  阅读(1785)  评论(0编辑  收藏  举报