2017-02-08 12 views
1

私のアプリではEmberデータを使用していますが、Emberのデータでは2つの別々のリクエスト(たとえばGETOPTIONS)がサーバーに送信されます。各Emberデータストアトランザクションが2つの分離要求をサーバーに送信するのはなぜですか?

下記のスクリーンショットを参照すると、OPTIONSリクエストは完了するまでに1秒かかり、ユーザー操作ごとに合計2秒かかります。以下

enter image description here

コードスニペットです、それは2つの要求を行い、なぜ

model() { 
    return this.store.findAll('card'); 
}, 

私の質問があり、私は1つの特定のルートでモデルを取得するために使用したいですか?これはOPTIONSリクエストを行うために必要ですか?どうすれば私のEmberのデータをOPTIONSリクエストするのを止めることができますか?

+0

あなたは私たちにあなたがリクエストを発射するために使用する正確なコードを示していることはできますか? Emberデータストアを使用していますか? –

+0

私はEmberデータストアを使用しており、質問を更新しました –

答えて

2

これは、主にセキュリティのために存在するpreflighted requestと呼ばれ、dealing with CORSの場合に必要です。

ブラウザは、実行中のリクエストがサーバーによって信頼されているかどうかを自動的に確認します。

それを無効に(または、少なくともそれを制限)するための2つの方法があります

  1. は、プリフライトリクエストの結果をキャッシュすることを可能にするとの要求量を減少させるAccess-Control-Max-Ageヘッダを設定します。

  2. プリフライトされたリクエストをトリガーしないsimple requestにリクエストを変換します。

    1. ザのみ許可方法である:

      • がGET
      • HEAD
      • POST

    単純な要求は、以下のすべての条件を満たしているものです

  3. 手動で設定することが許可された唯一のヘッダーはFetch specCORS-safelisted request-header

リクエストは、上記のもの以外の任意の他の方法を使用してまたは非CORS-safelistedヘッダを設定する場合は、意志であると定義するものです自動的にプリフライトされます。参考


、OPTIONSメソッドは同様にHTTP method definitions RFCによって定義される:

OPTIONSメソッドは、要求 - によって識別される要求/応答チェーンで利用可能な通信オプションについての情報の要求を表しますURI。この方法により、クライアントは、リソース動作を暗示することなく、またはリソース検索を開始することなく、リソースまたはサーバの能力に関連するオプションおよび/または要件を決定することができる。

Related Question

関連する問題