2017-12-09 3 views
0

Ich verwende ionic 3 und schreibe einige Provider-Code, um das Ergebnis von api Endpunkt, der in einigen HTTPS-Server ist zum Beispiel https://apiserver/api/endpoint/article ist mein Endpunkt. Mein Anbietercode ist unten. auchIonic Ajax/CORS Problem nach Build

// provider class function 
load(){ 

    if(this.data){ 
     return Promise.resolve(this.data); 
    } 

    let headers = new HttpHeaders() 
     .set("Access-Control-Allow-Origin", "*") 
     .set('Access-Control-Allow-Methods', 'GET, POST') 
     .set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 

    return new Promise(resolve => { 
     this.http.get('/api/endpoint/article',{headers}) 
     .subscribe(data => { 
      this.data = data; 
      resolve(this.data); 
     },err => { 
      console.log(err); 
     }); 
    }); 
    } 


// ionic.config.json 
{ 
    "name": "app", 
    "app_id": "app_id", 
    "type": "ionic-angular", 
    "integrations": { 
    "cordova": {} 
    }, 
    "proxies": [ 
    { 
     "path": "/api", 
     "proxyUrl": "https://apiserver/api" 
    } 
    ] 
} 

Last() gibt mir Daten, die ich in meiner app zeigen, ist diese Arbeit PERFEKT in meinem localhost, Ionic DevApp, Ionic-Ansicht, wenn sie durch Ios/Xcode Emulator debuggen.

aber wenn ich meine app auf dem Handy installieren, gibt es keine Daten zurück und zeigen Sie mir leere Seite.

Ich habe Debug es ganze Wette hat keinen Grund zu diesem Verhalten gefunden. kann CORS sein?

+0

Versuchen Sie, einige Konsolenprotokolle setzen und herauszufinden, ob es irgendwelche Fehler geworfen, wenn sie auf mobilen läuft. – Lihini

+0

Bereits versucht, es mit Emulator, aber es funktioniert gut im Emulator und nicht sicher, wie man Konsolenprotokolle für mobile Geräte setzen. –

+1

Sie können versuchen, den Fehler in der Ansicht selbst zu protokollieren. Zumindest können wir herausfinden, ob ein Fehler geworfen wurde – Lihini

Antwort

1

Wenn Sie eine App erstellen, müssen Sie den echten Endpunkt verwenden. Ionic Proxy funktioniert nur zum Debuggen (dh wenn Sie ionic cordova run ios -l verwenden).

Also, das

this.http.get('/api/endpoint/article',{headers}) 

wird

this.http.get('https://apiserver/api/endpoint/article',{headers}) 
+0

Dann, wie Sie CORS für Build-Anwendungen reparieren –

+1

Wenn Sie den REAL-Endpunkt und nicht ionischen Proxy verwenden, sollte es funktionieren. Andernfalls müssen Sie die CORS-Serverseite korrigieren, indem Sie der Serverantwort korrekte Header hinzufügen. – minux