Chúc mừng! Tôi có cửa hàng ember dữ liệu:Trình phục hồi dữ liệu ember.js không tải json
TravelClient.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.create({ bulkCommit: false, url: "http://someIP:somePORT"})
});
Và router:
TravelClient.ToursRoute = Ember.Route.extend({
model: function() {
return TravelClient.Tour.find();
}
});
tôi nhận JSON từ máy chủ từ xa:
{
"tours": [
{
"id": "5110e8b5a8fefe71e0000197",
"title": "qui deserunt dolores",
"description": "Id velit nihil.",
"seats": 12,
"options": [
],
"images": [
{
"id": "5110e8b5a8fefe71e0000196",
"url": "url"
}
}
Nhưng khi tôi cố gắng return TravelClient.Tour.find()
nó không thành công với:
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.
CNTT có vẻ như RESTAdapter không biết, rằng nó phải nhận được JSON hay cái gì?
UPDATE:
Trong bộ điều khiển ứng dụng trên các đường ray server-side:
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Request-Method'] = '*'
end
Nhưng nó vẫn còn:
OPTIONS http://someIP:somePORT/tours 404 (Not Found)
Và có vẻ như RESTAdapter cố gắng để tải các tour du lịch tài nguyên, không phải tours.json:
Request URL:http://someIP:somePORT/tours
LÀM VIỆC GIẢI PHÁP
Mở rộng 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";
}
})
và đáp ứng với một OPTIONS yêu cầu với tiêu đề đúng
tiêu đề bạn thiết lập được trả về với 'GET' yêu cầu bạn cần phải trả lại chúng với một' OPTIONS' yêu cầu – albertjan
CORS Kệ đá quý đã làm các trick, cảm ơn. Tôi nghĩ rằng nó làm tất cả những thứ với OPTIONS yêu cầu chỉ "ra khỏi hộp". – xamenrax
Heres liên kết cho khách truy cập tiếp theo https://github.com/cyu/rack-cors ftw – genkilabs