2010-04-25 33 views
3

我有XHR open()方法的问题。我的代码如下:的XMLHttpRequest的open()返回访问被拒绝

var xmlhttp=false; 

if(!xmlhttp) 
    try 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    catch(e) 
    { 
     xmlhttp=false; 
    } 

function returnPage(url) 
{ 
    if(!xmlhttp) 
     return alert("Your browser doesn't seem to support XMLHttpRequests."); 

    xmlhttp.open("GET",url,true); 
    xmlhttp.onreadystatechange=function() 
    { 
     if(xmlhttp.readyState!=4) return; 
     if(!xmlhttp.status||xmlhttp.status==200) 
      alert(xmlhttp.responseText); 
     else 
      alert("Request failed!"); 
    }; //onreadystatechange 

    xmlhttp.send(null); 
} 

电话:

<a href='#' onclick="returnPage('http://www.something.com'); return false;">Link 1</a></p> 

我使用IE8(因为我建立网页快讯)和我收到错误 “拒绝访问”。我在网上看到的问题是,XHR不能跨越不同领域的工作中发现,但我用代码Firefox附加在其上工作正常。那个加载项和“我的”代码(它们是相同的)正在调用同一页面。如何加载项访问和我的代码不是?

回答

6

是你正在做的AJAX调用同一个域中您网站的域名?您无法向其他域发出请求。

编辑

Firefox附加组件拥有更高权限(因为用户必须安装它们)。这就是附加组件可以进行跨域请求的原因。

+0

不,我知道这个问题的。但我很困惑如何火狐附加组件谁也使XHR调用“页”工作和我的代码呢?代码是一样的。 – rjovic 2010-04-25 15:53:17

+0

@rjovic - 看我的编辑。由于最终用户必须实际安装附加组件,因此附加组件具有较高的权限。 – Matt 2010-04-25 15:54:40

+2

如果是需要使用xmlhttprequest.open()读取本地文件的本地html页面会怎么样? – Maxim 2011-11-24 22:54:57