2015-02-10 202 views
0

我的config.xml的“域访问权限”设置为“*”。 我没有可能更改远程服务器的头文件(它是一个硬件设备)。 我的跨域jQuery.ajax调用效果很好。 但是,如果我使用XMLHttpRequest进行相同的调用,他们不起作用! (我从jQuery切换到XHR,因为我需要把Ajax放入网络工作者)。Cordova,ajax跨域调用使用jQuery但不使用XMLHttpRequest

我使用这个功能:

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

我的猜测(约缺乏细节如何,确切地说,它不工作)是,既然要装入的工人为BLOB(我猜使用来自Blob的createObjectURL并将输出传递给构造函数Worker),CORS将失败,不管任何头部,因为它没有启用blob:协议。

尝试通过http(s)将工作人员作为单独文件加载并查看会发生什么。