2016-06-02 5 views
0

Ich habe einen Rest-Web-Service und jetzt möchte ich eine Post-Anfrage von ION 2 Frontend App auf Authentifizierung Rest-Methode machen.Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden - Ionic 2

Auf die Anmeldungskomponente ich habe:

...this._restClient.post(
       'authentication', 
       body, 
       (data) => this.handleSuccessAuthenticate(data), 
       (data) => this.handleErrorAuthenticate(data) 
      );... 

Auf meinem Provider mein _restClient Code ist:

public post(resource: string, data: Object, onSuccess: restClient, onError: callbackRestClient) { 
     var httpResult: Observable<Response>; 


     if (data === null) { 
      httpResult = this._http.post(this.getUrl(resource), '{}', { headers: this.getHeaders() }); 
     } else { 
      httpResult = this._http.post(this.getUrl(resource), JSON.stringify(data), { headers: this.getHeaders() }); 
     } 


     this.handleResult(httpResult, onSuccess, onError); 
    } 

Ich habe auch eine private Methode Header zu setzen:

private getHeaders() { 
     var headers = new Headers(); 
     headers.append('Accept', 'application/json'); 
     headers.append('Content-Type', 'application/json'); 
     headers.append('Access-Control-Allow-Origin', '*'); 
     headers.append('Access-Control-Allow-Credentials', 'true'); 
     headers.append("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE"); 
     headers.append("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token"); 

     return headers; 
    } 

Ich habe die klassische Nachricht:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource 

Was mache ich falsch?

+2

Siehe dies eine große Thierry Antwort http://stackoverflow.com/questions/36768418/how-to-make -cors-enabled-http-requests-in-angular-2/36768488 # 36768488 – yurzui

Antwort

1

In der Tat ist es Server-Problem und kein Angular2. Die Preflight-OPTIONS-Anforderung muss in ihrer Antwort einen Access-Control-Allow-Origin-Header zurückgeben.

Sehen Sie diese Artikel für weitere Informationen:

+0

Gibt es irgendetwas, was ich tun kann, damit wir es auf der Client-Seite umgehen können, weil ich den Server nicht besitze. –

Verwandte Themen