访问受限制的URI被拒绝“代码:”1012

时间:2011-07-14 14:49:47

标签: ajax firefox

在域A(localhost:8080)上运行此代码以访问域B(localhost)上的未经身份验证的REST服务:

req = new XMLHttpRequest();
req.open('GET', 'http://localhost/rest/service');
req.send();

这很好用,我确实得到了跨域的响应,因为我在域B上设置了Apache设置响应头:

Header set Access-Control-Allow-Origin "http://localhost:8080"

但是,如果我现在打开REST服务的身份验证并尝试运行相同的请求:

req.open('GET', 'http://admin:admin@localhost/rest/service');

现在它在Firebug中产生了这个错误:

Access to restricted URI denied" code: "1012

我很困惑,我能够绕过相同的原始策略成功地对经过身份验证的服务进行跨域ajax调用,但是当服务需要身份验证时,Firefox决定不允许ajax调用?如何在不使用jsonp等的情况下解决这个问题,因为生产服务器将无法提供PHP或Servlet托管。

1 个答案:

答案 0 :(得分:0)

使用JQuery 1.5+很容易,我建议您将其用于JavaScript解决方案:

$.ajax({
    url: 'http://admin:admin@localhost/rest/service',
    crossDomain:true, // Here is the JSONP callback logic 
    success: function(data){
        console.log(data); // data is what comes back from your remote file
    }
});