首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

AJAX(XMLHttpRequest)开展跨域请求方法详解(三)

2012-12-21 
AJAX(XMLHttpRequest)进行跨域请求方法详解(三)3,带验证信息的请求身份验证是Web开发中经常遇到的问题,在

AJAX(XMLHttpRequest)进行跨域请求方法详解(三)

3,带验证信息的请求

身份验证是Web开发中经常遇到的问题,在跨域请求中,默认情况下是不发送验证信息的。要想发送验证信息,需要进行withCredentials 属性,下面就是一个简单请求的例子:

点击“开始测试”,我们可以检测到下面的请求执行过程:

GET /RequestsWithCredentials.aspx HTTP/1.1Host: dotnet.aspx.ccUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-aliveReferer: http://www.meng_xian_hui.com:801/CrossDomainAjax/RequestsWithCredentials.htmlOrigin: http://www.meng_xian_hui.com:801Cookie: ASP.NET_SessionId=fn2zf0zq1cuwgf45fm5fw145; visit=2HTTP/1.x 200 OKDate: Sun, 10 Jan 2010 14:13:58 GMTServer: Microsoft-IIS/6.0X-Powered-By: ASP.NETX-AspNet-Version: 2.0.50727Access-Control-Allow-Origin: http://www.meng_xian_hui.com:801Access-Control-Allow-Credentials: trueSet-Cookie: visit=3; expires=Sun, 10-Jan-2010 14:14:28 GMT; path=/Cache-Control: no-cachePragma: no-cacheExpires: -1Content-Type: text/html; charset=utf-8Content-Length: 1

注意 Cookie: ASP.NET_SessionId=fn2zf0zq1cuwgf45fm5fw145; visit=2 这一行,访问计数器已经被一起发送到服务器。

4,IE8 中的实现方法

IE8已经开始支持跨域访问资源了,但是,IE8提供的功能还比较简单,可以进行简单的请求,下面是一个使用的例子:

view plaincopy to clipboardprint?
  1. <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"???"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">??
  2. <html?xmlns="http://www.w3.org/1999/xhtml">??<head>??
  3. ??<title>孟宪会之AJAX跨域请求测试</title>??</head>??
  4. <body>????<input?type='button'?value='开始测试'?onclick='crossDomainRequest()'?/>??
  5. ??<div?id="content"></div>????<mce:script?type="text/javascript"><!--??
  6. ????var?xhr?=?new?XDomainRequest();??????var?url?=?'http://dotnet.aspx.cc/SimpleCrossSiteRequests.aspx';??
  7. ????function?crossDomainRequest()?{????????document.getElementById("content").innerHTML?=?"开始……";??
  8. ??????if?(xhr)?{??????????xhr.open('GET',?url);??
  9. ????????xhr.onload?=?handler;??????????xhr.send();??
  10. ??????}?else?{????????document.getElementById("content").innerHTML?=?"不能创建?XDomainRequest";??
  11. ??????}??????}??
  12. ????function?handler(evtXHR)?{????????document.getElementById("content").innerHTML?=?"结果:"?+?xhr.responseText;??
  13. ????}??//?--></mce:script>??
  14. </body>??</html>?

热点排行