在域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托管。
答案 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
}
});