Javascript 如何向BackboneJS模型中的所有AJAX调用添加自定义HTTP头?

Javascript 如何向BackboneJS模型中的所有AJAX调用添加自定义HTTP头?,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在开发一个backbonejs应用程序,它对所有模型数据使用RESTful API。我需要能够向通过模型的fetch()、save()等进行的所有ajax调用传递一个用于身份验证的客户HTTP头,其中包括一个localStorage项 我知道如何为每个单独的调用传递头,但如果不反复复制/粘贴相同的代码,我无法找到一种方法来为所有调用传递头。我读过一些关于覆盖backbonejs同步的文章,但我不太明白我是如何做到这一点的 我决定创建一个“BaseModel”,我的所有其他模型都将从它扩展而来

我正在开发一个backbonejs应用程序,它对所有模型数据使用RESTful API。我需要能够向通过模型的fetch()、save()等进行的所有ajax调用传递一个用于身份验证的客户HTTP头,其中包括一个localStorage项

我知道如何为每个单独的调用传递头,但如果不反复复制/粘贴相同的代码,我无法找到一种方法来为所有调用传递头。我读过一些关于覆盖backbonejs同步的文章,但我不太明白我是如何做到这一点的

我决定创建一个“BaseModel”,我的所有其他模型都将从它扩展而来,我认为这可能是一种简单的方法(这使我的api url根目录变得简单)

以下是我的模型的基本知识:

基本模型:

var Backbone = require("backbone");

// Declare our options we'll use to extend the base view
var modelOptions = {
apiUrl: 'api.php/v1.1',
};

// Export our extended view
module.exports = Backbone.Model.extend(modelOptions);
示例模型:

var BaseModel = require("./baseModel");

// Declare our options we'll use to extend the base view
var modelOptions = {
    initialize: function() {
        this.url = this.apiUrl+'/Cars';
    },
};
// Export our extended view
module.exports = BaseModel.extend(modelOptions);

我相信您可以通过jQuery设置全局AJAX头,如下所示:

$.ajaxSetup({
    headers: yourCustomHeader
}); 

此外,您还可以向每个请求添加一个头(或一组头),然后将beforeSend钩子与$.ajaxSetup()一起使用:


嘿,大卫,不要使用
$.ajaxSetup
。你的基本模式是正确的,这是我过去所做的。看我的。
Backbone.$.ajaxSetup({
    headers: yourCustomHeader
});
$.ajaxSetup({
    headers: { 'custom-header': ' value' }
});
$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('custom-header', 'value');
    }
});