2014-12-23 10 views
9

Sto riscontrando un problema molto strano durante la creazione e l'esecuzione dell'applicazione ionica. Chiamo Accesso API da server e funziona molto bene in del browser, quando eseguito come

$ionic serve --lab 

Ma quando app è installato in Android, dà 403 errori, e non dà tutte le altre informazioni codice di errore, probabilmente , non sono sicuro di come ottenere il log della console del browser nell'app Android ibrida.

ho funzione di login come segue

login: function(user) { 
      var deferred = $q.defer();   
      $http.post(SERVER_URL + '/auth/login', { 
       username: user.username, 
       password: user.password 
      }).success(function(response, status, headers, config) { 

       if (response.data && response.data[0]) { 
        Auth.setToken(response.data[0].token); 
        Auth.setUserId(response.data[0].id); 
        deferred.resolve(response); 
       } else { 
        deferred.reject(response); 
       } 
      }).error(function(response, status, headers, config) {    
       deferred.reject(response); 
      }); 

      return deferred.promise; 
     } 

Tuttavia, tutta la richiesta GET funziona correttamente.

+0

Verifica stato e intestazioni. forse qualcosa lo stato – dfsq

+0

= 403 e le intestazioni indefinite – RickDavis

risposta

1

L'elemento di accesso consente all'app di accedere alle risorse su altri domini in particolare, consente all'app di caricare pagine da domini esterni che possono occupare l'intera visualizzazione Web. Basta aggiungere questo in config.xml

<access origin="*" subdomains="true"/>

+2

Grazie, ma questo non funziona. – RickDavis

+0

inoltre non funziona per me –

1

Ha funzionato quando ho eseguito app come

$ionic run --livereload android 
2

mi sono imbattuto in questo poco tempo fa, non ho potuto pubblicare nulla dalla applicazione in esecuzione sul mio iPhone o dal simulatore senza ricevere un 403, ma funzionava direttamente da qualsiasi browser incluso quello sul mio telefono e usando il plugin Postman-chrome.

Questo sembrava essere un problema con qualsiasi richiesta POST dall'app Ionic: stava inviando l'intestazione Origin come file://. Con un backend Play Framework 2.4, , ho dovuto disabilitare lo CORSFilter completamente (rimuovendo play.http.filters da application.conf) perché funzionasse. Ho intenzione di indagare ulteriormente e forse fornire ulteriori dettagli in seguito.

  • Nota - Ho provato un sacco di modifiche di configurazione sul lato client/app compreso Cordova plug-in whitelist, X-Requested-With & Content-Type impostazioni di intestazione, <allow-navigation href="*"\>, e niente ha funzionato.
1

Ho avuto lo stesso esatto problema di @BatteryAcid quando un backend di Play Framework 2.4. La soluzione era semplicemente aggiungere file://. nelle Oxygen consentite.

vedere il riferimento application.conf sotto

play.filters.cors { 
    pathPrefixes = ["/*"] 
    allowedOrigins = ["file://*", "*"] 

    allowedHttpMethods = ["GET", "POST"] 
    preflightMaxAge = 3 days 
} 

Si potrebbe essere in grado di fare lo stesso per qualsiasi altro back-end.

Problemi correlati