kurojneko
@kurojneko

Как подружить Emberjs со сторонним апи, на другом хосте?

Доброго времени суток. Ковыряю эмбер жс, версии 2.4. И есть там у адаптеров такой параметр как хост, который указывает где брать данные к моделям и пр.
export default DS.RESTAdapter.extend({
	host: 'http://localhost:8000/api'
});

Во только проблема в том, что на хост идут аякс запросы, которые кросдоменность очень не любят, и конечно рассказывают No 'Access-Control-Allow-Origin' header is present on the requested resource.
Вопрос, в чем смысл параметра? если даже на том же хосте но другом порту он не может взять данные.

В этом плане с эмбером много проблем, во первых с определенной версии пропала всякая информация в документах, как запускать эмбер не его встроенным сервером. Нужен ли эмберу Нод, или его можно отвязать, и запускать более стандартными методами. Что делать с шаблонизаторами и пр.. но это тема для другого вопроса.

В данной ситуации есть еще один выход, попробовать сделать из эмберовского Нода - прокси к своему апи. Т.е. переправлять все запросы на соседний сервер с другим портом. Но в силу малых знаний нода, не могу доковыряться до его конфигов в эмберовском варианте.
Не хочеться бекенд делать на ноде, я приверженец питона, а пхпшники ваабще этот самый нод ненавидят )
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
Kaer_Morchen
@Kaer_Morchen
Разрабатываю web-приложения.
в чем смысл параметра?

А вы кросдоменность на бекенде настроили?

как запускать эмбер не его встроенным сервером

стандартно как и любую библиотеку или фреймворк. Если шаблоны не прекопилированы то можно использовать такой сниппет:

(function(){
  Ember.Application.initializer({
    name: 'load-templates',
    initialize: function(container, application) {
      application.deferReadiness();

      var templates = ['index', 'users'];

      Ember.RSVP.all(templates.map(function(item){
        return Ember.$.get("PATH_TO_DIRECTORY_WITH/" + item + ".hbs")
      })).then(function(all){
        all.forEach(function(hbs, i){
          Ember.TEMPLATES[templates[i]] = Ember.Handlebars.compile(hbs);
        });
      }).finally(function(){
        application.advanceReadiness();
      });
    }
  });
  
  var App = Ember.Application.create();
})();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы