2015-02-10 200 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)將工作人員作爲單獨文件加載並查看會發生什麼。