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

问题描述 投票:2回答:2

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

我知道如何为每个单独传递标题,但我无法找到一种方法来为所有调用执行它而无需反复复制/粘贴相同的代码。我已经阅读了一些有关覆盖backbonejs同步的内容,但我不太明白我是如何做到这一点的。

我已经决定创建一个'BaseModel',我的所有其他模型都会扩展它,认为这可能是一个简单的方法(这使我的api url root变得容易)。

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

BaseModel:

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);
javascript jquery backbone.js
2个回答
1
投票
$.ajaxSetup({
    headers: { 'custom-header': ' value' }
});

此外,您可以为每个请求添加标头(或标头集),然后使用带有$ .ajaxSetup()的beforeSend挂钩:

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('custom-header', 'value');
    }
});

0
投票

我相信你可以通过jQuery设置全局AJAX头:

$.ajaxSetup({
    headers: yourCustomHeader
}); 

要么

Backbone.$.ajaxSetup({
    headers: yourCustomHeader
});
© www.soinside.com 2019 - 2024. All rights reserved.