Extjs 如何在ext5中为每个ajax请求设置公共请求头?
我必须为每个ajax请求设置自定义的头,有没有一种方法可以只设置一次,而不必在每个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
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的启动函数()中编写这个吗??