1

私は残り火と残り火のデータを把握しようとしていますが、CORS を正しく処理することに問題があります。

静的フィクスチャを使用してモデルなどを定義することができましたが、リモート JSON を使用したいと考えています。だから私は次のようにember-dataをセットアップします:

App = Ember.Application.create();

App.Store = DS.Store.extend({
    revision: 13,
    adapter: DS.RESTAdapter.create({
        url: 'http://clara.eagle/v1/money'
    })
});

このようなモデル:

App.Transaction = DS.Model.extend({
    type:       DS.attr('string'),
    occurrence: DS.attr('date'),
    details:    DS.attr('string'),
    amount:     DS.attr('number'),
    currency:   DS.attr('string') 
});

そして、このようなルート:

App.IndexRoute = Ember.Route.extend({
    model: function() {
        return App.Transaction.find();
    }
});

バックエンドとして、有効なGETリクエストに対して JSON を返し、次の CORS ヘッダーをリクエストする既存の API がありますOPTIONS

Access-Control-Allow-Origin: http://ember.eagle
Access-Control-Allow-Headers: X-Requested-With, X-AUTHENTICATION, X-IP
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS

(ember.eagle は ember アプリ ドメイン、clara.eagle は API ドメインです)。

ただし、アプリを実行すると、クロムから次のように通知されます。

XMLHttpRequest cannot load http://clara.eagle/v1/money/transactions. Origin http://ember.eagle is not allowed by Access-Control-Allow-Origin.

そこで、ネットワーク タブを調べて、OPTIONSリクエストの結果を確認しました。これはAPIリクエストが失敗した理由を説明していますが、リクエストが実行されない理由はわかりません.OPTIONS最終的にはjQueryを使用してリクエストを行うためです(私が理解しているように)。

したがって、私の質問は、なぜこのOPTIONSリクエストが生成されないのですか? そして、それが設計されていない場合、どうすればそうすることができますか?

OPTIONSリクエストが API によって生成され、リクエストも機能することをテストしたGETので、API に問題があるとは思いません (スクリーンショット)。独自の jQuery (バニラ jQuery) を使用すると、OPTIONS要求は期待どおりに実行されます。

私は Ember OS を初めて使用します。おそらく何か不足している可能性がありますが、現時点ではそれが表示されません!

4

2 に答える 2