如何在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标头?的主要内容,如果未能解决你的问题,请参考以下文章