2016-08-26 18 views
10

Angular 2アプリケーションで本当に奇妙な問題が発生しました。実際には私のPlay Scala APIにJSONを含むPOST呼び出しを行いたいのですが、OPTIONS呼び出しを試みたいと思っています。Angular 2 HTTP POSTはOPTIONSコールを実行します

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 
    }) 
} 

そして、私は電話をかけるしようとすると、その後、(私はコンソールにしようとしました:

は、ここに私のコードです。 JSONをチェックするためのログとそれが正しい)、呼び出しは何らかの理由でOPTIONS呼び出しを行おうとします:

Google request picture

は誰も考えていますか?ありがとう!

答えて

16

クロスドメイン要求をしています。

localhost:9000へのリクエストはlocalhost:9002から作成されています。

ブラウザは、OPTIONS動詞を使用してフライト前のリクエストを作成し、彼が続行して「本当の」リクエストを行うことができるかどうかを知ります。

CORSについて詳しくはhereをご覧ください。

+0

それは事でした!ありがとうございました !悪いのは、コントローラにオプション機能があることです。リンクを張るのを忘れてしまいました... – Guigui

関連する問題