l’app ionica non può connettere il server abilitato Cors con $ http

Sto cercando di creare un’app mobile con framework ionico. Quando la mia applicazione prova a connettere il server per ottenere json (il server è web api e cors è abilitato) restituisce solo 404 su genymotion e dispositivo reale. Ma quando eseguo l’applicazione nel browser con ionic serve tutto bene.

Sono abbastanza sicuro che CORS sia funzionale. Qui l’intestazione della risposta che ho ottenuto mentre l’applicazione funziona nel browser.

Risposta

 Access-Control-Allow-Origin:* Cache-Control:no-cache Content-Length:395 Content-Type:application/json; charset=utf-8 Date:Fri, 08 May 2015 20:24:04 GMT Expires:-1 Pragma:no-cache Server:Microsoft-IIS/7.0 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 

Richiesta :

 Accept:application/json, text/plain, */* Accept-Encoding:gzip, deflate, lzma, sdch Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:no-cache Connection:keep-alive DNT:1 Host:*******:14400 Origin:http://192.168.0.28:8100 Pragma:no-cache Referer:http://192.168.0.28:8100/ 

Config.xml ha questa linea nella configurazione

    nella mia app.js ho rimosso le intestazioni X-Requested-With per tutte le chiamate http.

     .config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; } ]) 

    Io uso semplice ottenere richieste al server nelle mie classi di fabbrica.

     $http.get(serverPath + "/api/mobilerest/mainPage"); 

    Quando eseguo l’applicazione in Genymode o nel dispositivo reale, la risposta è 404 e statusText è “non trovato”. Sono abbastanza sicuro che web api funzioni, la causa di questo comportamento è nelle app ioniche, la mia app è locale e il protocollo è file: /// quindi l’intestazione Origin è nullo nella richiesta, quindi il server restituisce 404. Ho anche provato un file locale senza alcun server ottengo lo stesso errore come nell’applicazione.

     Accept:*/* Accept-Encoding:gzip, deflate, sdch Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:no-cache Connection:keep-alive DNT:1 Host:server:14400 Origin:null Pragma:no-cache 

    Mi sto perdendo qualcosa ?

    al momento, la whitelist di cordova-plugin sembra essere “obbligatoria”.

    installalo:

     cordova plugin add cordova-plugin-whitelist 

    configurare config.xml

    È ansible mantenere la configurazione corrente con * o modificare per regole più restrittive

    aggiungi una politica html su index.html, devi aggiungere anche una politica. Per autorizzare tutto, eccolo qui:

       

    puoi semplicemente andare nel file config .xml e modificare questa riga

      

    e puoi chiamare qualsiasi dato senza intrusione di CORS in console grazie plz applicare questo codice alla tua app ionica