2014-12-03 18 views
5

Tôi đang viết ứng dụng Ember đầu tiên và thời điểm này, tôi đang cố gắng tiêu thụ JSON từ API của tôi (được tạo trong Rails with Rabl), nhưng RESTAdapater không hoạt động. Nó thậm chí không liên lạc với máy chủ của tôi! Tôi nhận được mã này:Ember RESTAdapter không liên lạc với máy chủ

app/adapter/application.js

import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
    host: 'localhost:3000', 
    namespace: 'api' 
}); 

app/models/player.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    heightFormatted: DS.attr('string'), 
    heightCm: DS.attr('number'), 
    weightLb: DS.attr('number'), 
    weightKg: DS.attr('string'), 
    birthplace: DS.attr('string'), 
    birthdate: DS.attr('string'), 
    neoId: DS.attr('number'), 
    position: DS.attr('string'), 
    number: DS.attr('string') 
}); 

app/tuyến/chơi/index. js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function() { 
    return this.store.find('player'); 
    } 
}); 

app/tuyến/players.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function(params) { 
    return this.store.find('player', params.player_id); 
    } 
}); 

Bất cứ ý tưởng? Tôi nghĩ rằng tôi đã thiết lập tất cả đúng cách.

console.log

[Report Only] Refused to connect to 'http://localhost:3000/api/players' because it violates the following Content Security Policy directive: "connect-src 'self' ws://localhost:35729 ws://0.0.0.0:35729". 
+0

Bạn có thực sự nhấn các tuyến đường đó trong url không? – Kingpin2k

+0

Không, tôi truy cập với một liên kết trong trang chủ '' {link-to 'Players' 'players'}} ''. – tehAnswer

Trả lời

2

tôi sẽ đoán bạn đang sử dụng ember-cli mà đi kèm chứng khoán với một addon content-security-policy những ngày này.

Nếu bạn chỉnh sửa config/environment.js để cho phép tài nguyên này hoạt động tốt. Để thực hiện việc này:

Một nơi nào đó trong mã đó trước return ENV; bạn nên tìm một dòng bắt đầu bằng ENV.contentSecurityPolicy = {. Tìm dòng đó và bên trong bạn sẽ tìm thấy một cái gì đó như:

ENV.contentSecurityPolicy = { 
    'connect-src': "'self'", 
    'style-src': "'self'", 
    'script-src': "'self'", 
    'img-src': "'self'" 
} 

Nếu bạn không thể tìm thấy, hãy tạo nó. Sau đó, thay đổi giá trị của khóa connect-src từ cũng bao gồm http://localhost:3000/*. Sử dụng ví dụ trên tập tin mới của bạn sẽ giống như thế:

ENV.contentSecurityPolicy = { 
    'connect-src': "'self' http://localhost:3000/*", 
    ... 
} 

Ember-cli speaks to this in greater (and far better) detail directly here on their site.

5

Có ember-cli không đi kèm với các content-security-policy add-on được xây dựng trong những ngày này.

Để đảm bảo rằng bạn có thể kết nối với api của mình khi đang ở chế độ phát triển, hãy thêm đoạn mã sau vào tệp sau config/environment.js và thay đổi số cổng của bạn cho phù hợp.

ENV.contentSecurityPolicy = { 'connect-src': "'self' http://localhost:3000" }

+0

Điều này làm việc cho tôi. Câu trả lời được chấp nhận cho thấy 'connect-src:" 'self' http: // localhost: 3000/* ",'. tuy nhiên công cụ sửa đổi ký tự đại diện không hoạt động như mong đợi. Cảm ơn! :) – conciliator

Các vấn đề liên quan