【问题标题】:How to add header for all RESTAdapter ember requests如何为所有 RESTAdapter ember 请求添加标头
【发布时间】:2013-05-30 03:08:19
【问题描述】:

API 需要指定 api 版本application/vnd.api+json;version=1,还需要安全的 x-app-id 和 x-app-secret。有没有办法在 Ember 的 RESTAdapter 中指定?

尝试请求头后

App.Adapter = DS.RESTAdapter.extend({
  namespace: 'api',
  beforeSend: function(xhr) {
    xhr.setRequestHeader('x-my-custom-header', 'some value');
  }
})

解决方案

App.Adapter = DS.RESTAdapter.extend({
  bulkCommit: true,
  namespace: 'api',
  headers: { 
   'Accept': 'application/vnd.app+json;version=1',
   'x-appid': '2375498237',
   'x-secret': '238945298235236236236236375923'
  },
  ajax: function(url, type, hash) {
    if (this.headers !== undefined) {
      var headers = this.headers;
      hash.beforeSend = function (xhr) {
        Ember.keys(headers).forEach(function(key) {
          xhr.setRequestHeader(key, headers[key]);
        });
      };
    }
    return this._super(url, type, hash);
  }
});

App.Store = DS.Store.extend({ adapter: App.Adapter.create() }); 
App.Store = App.Store.create();

更新 #2

不再需要上述解决方案,因为 Ember 现在默认支持此行为。您只需要提供headers,它就会自动添加。

在此处查看文档http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_custom-http-headers

【问题讨论】:

  • 不适合我;当我查看请求时,其中没有标题。任何想法 ?可能是版本问题?
  • 你是不是调用App.Store = DS.Store.extend({ adapter: App.Adapter.create() });然后App.store = App.Store.create();添加上面的代码后?
  • 成功了 :) 谢谢
  • 任何没有 Ember-Data 的解决方案?!
  • @V-Light 使用 jQuery 很容易做到

标签: ember.js ember-data


【解决方案1】:

RESTAdapter 的核心是为 Ajax 使用 jQuery,您可以使用 $.ajaxSetup 或更多 Ember 方式使用 Ember.$.ajaxSetup 设置标头,这可以理想地保护您免受 API 的较低级别更改。

jQuery 文档: http://api.jquery.com/jQuery.ajaxSetup/

示例如下:

How can I add a custom HTTP header to ajax request with js or jQuery?

【讨论】:

  • 好的,关于如何安全地放置 x-app-secret 有什么想法吗?
  • 任何我可以复制过去的东西。我无法让其中任何一个在我的项目中工作。或者我不知道如何整合它们。
  • App.Adapter = DS.RESTAdapter.extend({ namespace: 'api', beforeSend: function(xhr) { xhr.setRequestHeader('x-my-custom-header', '一些值' ); } })
猜你喜欢
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2020-10-18
  • 2015-12-12
相关资源
最近更新 更多