Javascript Ember Restapter don';Don’不要伸手去拿服务器

Javascript Ember Restapter don';Don’不要伸手去拿服务器,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我正在编写我的第一个Ember应用程序,而现在,我正试图从我的API(用Rabl在Rails中制作)中使用JSON,但是RestaDapter不起作用。它甚至连我的服务器都没有!我得到了这个密码: app/adapters/application.js import DS from 'ember-data'; export default DS.RESTAdapter.extend({ host: 'localhost:3000', namespace: 'api' }); impo

我正在编写我的第一个Ember应用程序,而现在,我正试图从我的API(用Rabl在Rails中制作)中使用JSON,但是RestaDapter不起作用。它甚至连我的服务器都没有!我得到了这个密码:

app/adapters/application.js

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'localhost:3000',
  namespace: 'api'
});
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')
});
import Ember from 'ember';

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

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

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'localhost:3000',
  namespace: 'api'
});
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')
});
import Ember from 'ember';

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

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

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'localhost:3000',
  namespace: 'api'
});
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')
});
import Ember from 'ember';

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

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

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'localhost:3000',
  namespace: 'api'
});
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')
});
import Ember from 'ember';

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

export default Ember.Route.extend({
  model: function(params) {
    return this.store.find('player', params.player_id);
  }
});
有人知道吗?我想我把一切都安排妥当了

控制台日志

[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".

我猜您正在使用的是ember cli,它最近有一个插件

如果您编辑
config/environment.js
以允许使用此资源,那么一切都会正常工作。为此:

在返回ENV之前的代码中的某个地方您应该找到一行,以
ENV.contentSecurityPolicy={
开头。找到该行后,您应该在其中找到类似以下内容:

ENV.contentSecurityPolicy = {
    'connect-src': "'self'",
    'style-src': "'self'",
    'script-src': "'self'",
    'img-src': "'self'"
}
ENV.contentSecurityPolicy = {
    'connect-src': "'self' http://localhost:3000/*",
    ...
}
如果找不到,请创建它。然后将
connectsrc
键的值从更改为也包括
http://localhost:3000/*
。使用上面的示例,您的新文件应该如下所示:

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

是的,现在ember cli确实附带了内置的附加组件

为了确保在开发模式下可以连接到api,请将下面的代码段添加到以下文件
config/environment.js
,并相应地更改端口号

ENV.contentSecurityPolicy={
'连接src':“'self'http://localhost:3000"

}

你真的在url中点击了这些路线吗?不,我是通过主页中的链接访问的
{link to'Players''Players'}
。这对我来说很有效。公认的答案是
connectsrc:“self”http://localhost:3000/*“,
。但是,通配符修饰符没有按预期工作。谢谢!:)