IE7+浏览器下XMLHttpRequest跨域请求安全配置

  IE7+浏览器已经开始支持XMLHttpRequest对象,当使用XMLHttpRequest请求不同源的文件(不同域名的页面),和浏览器是否启用安全-》internet区域的“通过域访问数据源”有关系。

  • 如果启用了此选项,那么所有跨域的页面都可以访问,即使跨域的页面没有设置过Access-Control-Allow-Origin响应头。
  • 如果禁用了“通过域访问数据源”,跨域页面设置过Access-Control-Allow-Origin响应头为*,也无法请求,open时就报错。

IE7+浏览器下XMLHttpRequest跨域请求安全配置

  注意:如果双击运行或者拖拽进入IE浏览器,XMLHttpRequest对象无法请求本地资源,会出现“拒绝访问”错误,activexobject创建的对象则没有限制,具体参考:网站未发布,ajax能请求的本地资源有哪些

 

<script>
/*var xdr=new XMLHttpRequest();
//xdr.open("get", '11.txt', true); //本地测试访问本地资源,出现拒绝访问错误
xdr.open("post", 'http://www.w3dev.cn/json.asp', true); //如果禁用了“通过域访问数据源”,跨域页面设置过Access-Control-Allow-Origin响应头为*,也无法请求,open时就报错。
xdr.onreadystatechange = function () {
    if (xdr.readyState == 4) alert(xdr.responseText)
}
xdr.send(null)*/
</script>

  如果未启用安全-》internet区域的“通过域访问数据源”,跨域页面设置过Access-Control-Allow-Origin响应头为*允许所有不同源的页面请求,IE要如何请求此类页面得到跨域页面的内容?可以使用IE专有的XDomainRequest对象

<script>
    var xdr = new XDomainRequest();
    //注意XDomainRequest对象本地浏览(双击或者拖拽)无法请求跨域页面,要不报“拒绝访问。”,
    //需要发布网站,并且跨域请求仅支持http:// 和https:// 2种协议。
    //跨域的页面要设置过Access-Control-Allow-Origin响应头为*,要不没有反应,也不会报错。
    xdr.open("post", 'http://www.w3dev.cn/json.asp');
    xdr.onload = function () {
      alert(xdr.responseText)
    }
    xdr.send(null);
</script>

 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:IE7+浏览器下XMLHttpRequest跨域请求安全配置

评论(0)Web开发网
阅读(1321)喜欢(0)JavaScript/Ajax开发技巧