Extjs 如何在ext5中为每个ajax请求设置公共请求头?

Extjs 如何在ext5中为每个ajax请求设置公共请求头?,extjs,extjs-mvc,extjs5,Extjs,Extjs Mvc,Extjs5,我必须为每个ajax请求设置自定义的头,有没有一种方法可以只设置一次,而不必在每个ajax代理中手动配置它 proxy: { headers: { token: 'xyz' // this token that every proxy should contain to communicate with our remote server. } } 在jQuery中,我可以通过使用“ajaxPrefilter”实现这一点,如下所示: jQuery.ajaxPrefil

我必须为每个ajax请求设置自定义的头,有没有一种方法可以只设置一次,而不必在每个ajax代理中手动配置它

proxy: {
   headers: {
      token: 'xyz' // this token that every proxy should contain to communicate with our remote server. 
   }
}
在jQuery中,我可以通过使用“ajaxPrefilter”实现这一点,如下所示:

jQuery.ajaxPrefilter(function(options, originalOptions, jqXHR) {
    jqXHR.setRequestHeader('token', 'xyz');
}

但我不知道如何在extjs中正确执行,请帮助

像这样覆盖Ext.data.proxy.Ajax怎么样

Ext.override(Ext.data.proxy.Ajax, {
    headers: {
        token: 'xyz' // this token that every proxy should contain to communicate with your remote server. 
    }
});

Ext.Ajax是一个单例,因此您应该能够做到:

Ext.Ajax.defaultHeaders = {
  token: 'xyz'
};

将它放在应用程序的开头,或者您认为合适的地方,然后每个后续Ajax请求都会有这个令牌。

下面的代码将CSRF头和令牌添加到每个Ajax请求中。请注意

Ext.Ajax.setDefaultHeaders({
            'Accept':'application/json'
        });
Ext.Ajax.on('beforerequest', function(conn, options) {
    var x = document.getElementsByTagName("META");
    var token = "";
    var headerVal = ""; 
    var i;
    for (i = 0; i < x.length; i++) {
        if (x[i].name == "_csrf")
        {
             token = x[i].content;
        }else if (x[i].name=="_csrf_header"){
             headerVal = x[i].content;
        }
    }

    //Ext.Ajax.defaultHeaders = Ext.apply(Ext.Ajax.defaultHeaders || {}, { headerVal : token });
    Ext.Ajax.setDefaultHeaders({
        headerVal : token
    });
});
Ext.Ajax.on('beforerequest',函数(conn,options){
var x=document.getElementsByTagName(“元”);
var token=“”;
var headerVal=“”;
var i;
对于(i=0;i
Ext.Ajax.defaultHeaders={token:'xyz'}对我不起作用,相反
Ext.Ajax.setDefaultHeaders({token:'xyz'})
工作正常,但我不知道defaultHeaders和setDefaultHeaders之间的区别。奇怪的是,我在4.2.1文档中的任何地方都找不到
setDefaultHeaders
。我想它只是一个用于设置
defaultHeaders
变量的包装器。。。这正是它所做的。目前我正在使用extjs5,它有
#setDefaultHeaders
方法,请参考[。我可以在Ext.application的启动函数()中编写这个吗??