我的config.xml具有" Domain Access"设置为" *"。 我无法更改远程服务器的标头(它是硬件设备)。 我的跨域jQuery.ajax调用运行良好。 但是,如果我使用XMLHttpRequest进行相同的调用,他们就无法工作! (我将从jQuery切换到XHR,因为我需要将ajax放入Web worker中。)
我正在使用此功能:
myapp.ajax=function(){
var o = arguments[0]||{},
url = o.url||null,
cache = o.cache||true,
timeout = o.timeout||0,
callback = arguments[1]||function(){}
;
if(!url)return null;
var myRequest = new XMLHttpRequest();
myRequest.timeout = timeout;
var urlToCall=url;
if(!cache){
urlToCall += urlToCall.indexOf('?')==-1 ? '?' : '&' ;
urlToCall += '_=' + Date.now() ;
}
myRequest.onreadystatechange=function() {
if (myRequest.readyState == 4) {
if (myRequest.status == 200) {
callback(myRequest.responseText,'success',myRequest);
} else {
callback(myRequest,'error',myRequest.statusText);
}
}
}
myRequest.open("GET",urlToCall,true);
myRequest.setRequestHeader("Access-Control-Allow-Origin", "*");
myRequest.setRequestHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
myRequest.setRequestHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE, PUT, HEAD");
myRequest.send(null);
}
答案 0 :(得分:0)
我的猜测(由于缺乏关于如何,确切地说它不起作用的详细信息)是因为你将工作者加载为Blob(我想从Blob中使用createObjectURL
并传递输出到Worker
构造函数),无论是否有任何头文件,CORS都会失败,因为它没有为blob:
协议启用。
尝试通过http(s)将工作人员作为单独的文件加载,看看会发生什么。