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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在BackboneJS模型中的所有AJAX调用中添加自定义HTTP标头?相关的知识,希望对你有一定的参考价值。

我正在开发一个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);
答案
$.ajaxSetup({
    headers: { 'custom-header': ' value' }
});

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

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

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

$.ajaxSetup({
    headers: yourCustomHeader
}); 

要么

Backbone.$.ajaxSetup({
    headers: yourCustomHeader
});

以上是关于如何在BackboneJS模型中的所有AJAX调用中添加自定义HTTP标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BackBonejs 方法中调用 Objective-c 方法

与backbonejs模型对象json表示的问题

如何通过主干中的 ajax 调用使用模型渲染多个视图

BackboneJs - 模型或集合是不是应该了解视图

将猫鼬模型引导到 BackboneJS

BackboneJS - 如何建立与 MySQL 数据库的连接