我必须为每个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中正确地做到这一点,请帮忙!
答案 0 :(得分:4)
Ext.Ajax.setDefaultHeaders({
'Accept':'application/json'
});
答案 1 :(得分:0)
如何覆盖这样的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.
}
});
答案 2 :(得分:0)
Ext.Ajax是一个单身人士,所以你应该能够这样做:
Ext.Ajax.defaultHeaders = {
token: 'xyz'
};
将其放在应用的开头或您认为合适的位置,然后每个后续的Ajax请求都会有此令牌。
答案 3 :(得分:0)
下面的代码将CSRF标头和令牌添加到每个ajax请求中。请求之前请注意
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
});
});