2016-08-26 2 views
10

Ich stoße auf ein wirklich seltsames Problem mit meiner Angular 2-Anwendung. Eigentlich möchte ich einen POST-Aufruf mit einem JSON zu meiner Play Scala-API machen, aber ich möchte weiterhin versuchen, einen OPTIONS-Aufruf zu machen.Angular 2 HTTP POST ruft einen OPTIONS-Aufruf auf

Hier ist mein Code:

LoginService

constructor (private _apiEndpoint: ApiEndpoint) {} 

postLogin(login: string, credential: string): Observable<AuthToken> { 
    let headers = new Headers({ "Content-Type": "application/json" }) 
    let jsonLogin = {"login": login, "password": credential} 

    return this._apiEndpoint.postLogin(JSON.stringify(jsonLogin), headers) 
        .map(this._apiEndpoint.extractData) 
} 

ApiEndpoint

constructor (private _http: Http) {} 

postLogin(body: string, options: any) { 
    return this._http.post("http://localhost:9000/login", body, { 
     headers: options 
    }) 
} 

Und dann, wenn ich versuche, den Anruf zu tätigen (Ich habe zu trösten versucht. log, um die JSON zu prüfen, und es ist korrekt), und der Anruf versucht, einen OPTIONS-Anruf aus welchem ​​Grund auch immer zu machen :

Google request picture

Hat jemand eine Idee? Vielen Dank !

Antwort

16

Sie machen eine Cross-Domain-Anfrage.

Die Anfrage ist localhost:9000 und wird von localhost:9002 gemacht.

Der Browser erstellt eine Pre-Flight-Anfrage mit dem OPTIONS-Verb, um zu wissen, ob er weitermachen und die "echte" Anfrage stellen kann.

Lesen Sie mehr über CORS here.

+0

Das war das Ding! Vielen Dank ! Das Schlimmste ist, dass ich die Optionen in einem Controller hatte, ich habe nur vergessen, die Route zu verknüpfen es ... – Guigui