网站未发布,ajax能请求的本地资源有哪些

最近在学习AJAX,本地调试的时候发现会报“Cross origin requests are only supported for HTTP” 错误。查了一些资料后发现,是因为在直接请求资源的时候(没用服务器的情况下),有的浏览器(如firefox)支持请求本地资源,而有些(如chrome)不支持。

还有就是在实现 httpRequest.onreadystatechange 的时候,通常的代码如下:

try {
    if (httpRequest.readyState === 4) {
      //如果是本地请求,就不要判断status的值了,试了一下,会返回0.
      if (httpRequest.status === 200) {
        alert(httpRequest.responseText);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }
  catch( e ) {
    alert('Caught Exception: ' + e.description);
  }
请求本地资源的时候,就不要判断status的值了,没用服务器自然就不会返回状态值。



以下是转载的部分

--------------------------   转载分割线   ------------------------------


  网站未发布,本地file协议测试【就是直接双击打开或者拖拽进入浏览器中】时,有以下几种情况

 



  假设目录结构如下


root
  ajax
      ajax.html        --ajax请求文件
      1.html
     files
        1.html
        folder
          1.html
  1.html


1)webkit核心的浏览器,如chrome,只能访问自己(或者可以访问其他域名的页面,此页面设置过Access-Control-Allow-Origin=*响应头允许跨域请求),无法访问其他本地资源。ajax.html可以请求ajax.html自己,不能请求同文件夹下的1.html
网站未发布,ajax能请求的本地资源有哪些

-收缩 JavaScript代码
     var xhr =  new XMLHttpRequest();
    xhr.open( 'get''ajax.html'false); //chrome ajax请求自己没问题
     //xhr.open('get', '1.html', false); //请求其他文件报错“Cross origin requests are only supported for HTTP. ”
    xhr.send( null)
    alert(xhr.responseText)

2)Gecko核心浏览器,如firefox,可以访问ajax文件夹下的所有文件和子文件,但是不能访问上一级目录的文件,报“Access to restricted URI denied”错误

网站未发布,ajax能请求的本地资源有哪些

-收缩 JavaScript代码
     var xhr =  new XMLHttpRequest();
     //xhr.open('get', '1.html', false); //没问题
     //xhr.open('get', 'files/1.html', false); //没问题
     //xhr.open('get', 'files/folder/1.html', false); //没问题
    xhr.open( 'get''../1.html'false);  //请求上级目录文件会出错,报“Access to restricted URI denied”错误
    xhr.send( null)
    alert(xhr.responseText)


3)trident核心的浏览器,如IE,TT之类的,使用XMLHttpRequest【IE7+支持XMLHttpRequest】创建的ajax对象无法请求本地资源所有资源,连请求自身也会报错,会出现拒绝访问错误

网站未发布,ajax能请求的本地资源有哪些

-收缩 JavaScript代码
     var xhr =  new XMLHttpRequest();
    xhr.open( 'get''ajax.html'false);
    xhr.send( null)
    alert(xhr.responseText)

  使用acx创建的ajax对象则没有任何限制,哪怕是访问其他盘的文件或者其他站点的内容。

-收缩 JavaScript代码

     var xhr =  new ActiveXObject( "microsoft.xmlhttp");
     //xhr.open('get', '1.html', false); //没问题
     //xhr.open('get', 'files/1.html', false); //没问题
     //xhr.open('get', 'files/folder/1.html', false); //没问题
     //xhr.open('get', '../1.html', false); //访问上级目录也没问题
     //xhr.open('get', 'c:\\InstallPackage.log', false); //直接指定物理路径访问其他盘的文件也没问题    
    xhr.open( 'get''http://www.coding123.net/json.asp'false);  //访问其他站点的内容
    xhr.send( null);
    alert(xhr.responseText)
转载自:网站未发布,ajax能请求的本地资源有哪些
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值