jquery 拒绝访问 无法加载 跨域问题

关于调用jquery的load方法时,报拒绝访问或加载内容有乱码

请参照问题描述及解决方案


因为IE7,IE8增加了Native XMLHTTP【XMLHttpRequest对象】支持,在IE7+浏览器下创建ajax对象时如果创建的是XMLHttpRequest对象,由于安全设置的问题,是不允许访问本地资源的。IE6不支持XMLHttpRequest对象,而是使用ActiveXObject来创建ajax对象。


有两个解决问题的办法

1.设置浏览器安全。
  点击“工具”->“Internet选项”->“高级”,在“安全”节点下找到“启用本机XMLHTTP支持”,该选项默认是钩选,禁用它后可以解决问题。

2.在创建ajax对象时先判断ActiveXObject对象,使用ActiveXObject对象来创建ajax对象

-JavaScript
var xhr= false;
if(window.ActiveXObject){
     try{xhr =  new ActiveXObject( "Msxml2.XMLHTTP.4.0");}
     catch(e1){
       try{xhr =  new ActiveXObject( "Msxml2.XMLHTTP");}
       catch(e2){{xhr =  new ActiveXObject( "Msxml2.XMLHTTP");}}
    }
}
else  if(window.XMLHttpRequest){
/*XMLHttpRequest放最后来创建,这样在IE7,IE8中双击运行或者拖拽进入浏览器中浏览就
不会出现access is denied 拒绝访问错误了,因为使用的是ActiveXObject来创建ajax对象*/

   xhr=  new XMLHttpRequest();
}


  其实 建议还是先判断XMLHttpRequest对象,因为XMLHttpRequest对象的版本比ActiveXObject高,高版本的ajax对象错误和性能上都比较好。

   因为网站最终都是要向外发布,然后 通过http协议来访问,这样就不会出现“ 双击运行或者拖拽进入浏览器”的可能。而通过http协议来访问的话请求的资源 只要不跨域,是不会出现 access is denied 拒绝访问的错误的。

  如果为了测试方便而“双击运行或者拖拽进入浏览器”来查看效果,就得使用上面的方法来解决出现access is denied拒绝访问的错误了。

你可能感兴趣的:(jquery 拒绝访问 无法加载 跨域问题)