乾杯!Ember.js ember-data restadapterがjsonをロードできない
TravelClient.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.create({ bulkCommit: false, url: "http://someIP:somePORT"})
});
とルータ:
TravelClient.ToursRoute = Ember.Route.extend({
model: function() {
return TravelClient.Tour.find();
}
});
私は、リモートサーバーからこのJSON受け取る:
{
"tours": [
{
"id": "5110e8b5a8fefe71e0000197",
"title": "qui deserunt dolores",
"description": "Id velit nihil.",
"seats": 12,
"options": [
],
"images": [
{
"id": "5110e8b5a8fefe71e0000196",
"url": "url"
}
}
をしかし、私はreturn TravelClient.Tour.find()
しようとすると、それはで失敗 私は燃えさしデータストアを持っています:
http://someIP:somePORT/tours 404 (Not Found)
XMLHttpRequest cannot load http://someIP:somePORT/tours. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
それはRESTAdapterがわからない、それはJSONまたは何を受け取る必要がありますか?
UPDATE:レールのサーバー側のアプリケーションコントローラで
:
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Request-Method'] = '*'
end
しかし、それはまだです:
OPTIONS http://someIP:somePORT/tours 404 (Not Found)
そしてRESTAdapterがツアーをロードしようとするように見えますリソース、tours.json:
Request URL:http://someIP:somePORT/tours
WORKING SOLUTION
RESTAdapter拡張:
TravelClient.CUSTOMAdapter = DS.RESTAdapter.extend({
bulkCommit: false,
url: "http://remote_server_address",
buildURL: function(record, suffix) {
var s = this._super(record, suffix);
return s + ".json";
}
})
をしてOPTIONSへの応答
設定したヘッダは、 'GET'で返されますが、' OPTIONS'要求 – albertjan
ラックCORSの宝石とそれらを返す必要が要求おかげで、トリックをしました。私はOPTIONSリクエストを "そのまま"そのまま使っていると思います。 – xamenrax
次の訪問者のためのリンクを作成しますhttps://github.com/cyu/rack-cors ftw – genkilabs